// Anime4K_Upscale_CNN_x2_UL
// 移植自 https://github.com/bloc97/Anime4K/blob/78e4f78f65b772e94bae6e7db5c49af1e889f784/glsl/Upscale/Anime4K_Upscale_CNN_x2_UL.glsl

//!MAGPIE EFFECT
//!VERSION 4
//!SORT_NAME Anime4K_Upscale_3
//!USE MulAdd
//!CAPABILITY FP16

#include "../StubDefs.hlsli"


//!TEXTURE
Texture2D INPUT;

//!TEXTURE
//!WIDTH INPUT_WIDTH * 2
//!HEIGHT INPUT_HEIGHT * 2
Texture2D OUTPUT;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_tf;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_tf1;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_tf2;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_1_tf;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_1_tf1;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_1_tf2;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_2_tf;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_2_tf1;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_2_tf2;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_3_tf;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_3_tf1;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_3_tf2;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_4_tf;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_4_tf1;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_4_tf2;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_5_tf;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_5_tf1;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_5_tf2;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_6_tf;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_6_tf1;

//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D conv2d_6_tf2;

//!SAMPLER
//!FILTER POINT
SamplerState sam;

//!SAMPLER
//!FILTER LINEAR
SamplerState sam1;


//!PASS 1
//!DESC Conv-4x3x3x3
//!IN INPUT
//!OUT conv2d_tf, conv2d_tf1, conv2d_tf2
//!BLOCK_SIZE 16
//!NUM_THREADS 64

void Pass1(uint2 blockStart, uint3 threadId) {
	uint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;
	uint2 inputSize = GetInputSize();
	if (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {
		return;
	}

	float2 inputPt = GetInputPt();
	
	uint i, j;

	MF3 src[4][4];
	[unroll]
	for (i = 0; i <= 2; i += 2) {
		[unroll]
		for (j = 0; j <= 2; j += 2) {
			float2 tpos = (gxy + uint2(i, j)) * inputPt;
			const MF4 sr = INPUT.GatherRed(sam, tpos);
			const MF4 sg = INPUT.GatherGreen(sam, tpos);
			const MF4 sb = INPUT.GatherBlue(sam, tpos);

			// w z
			// x y
			src[i][j] = MF3(sr.w, sg.w, sb.w);
			src[i][j + 1] = MF3(sr.x, sg.x, sb.x);
			src[i + 1][j] = MF3(sr.z, sg.z, sb.z);
			src[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);
		}
	}

	[unroll]
	for (i = 1; i <= 2; ++i) {
		[unroll]
		for (j = 1; j <= 2; ++j) {
			uint2 destPos = gxy + uint2(i - 1, j - 1);

			if (i != 1 || j != 1) {
				if (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {
					continue;
				}
			}

			MF4 target1 = { 0.0357343, 0.024812812, 0.040654864, -0.002103711 };
			target1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.27576035, -0.07072761, -0.1630093, -0.11306897, 0.14765891, -0.039999995, 0.04671886, -0.06138944, 0.11445724, 0.10989976, 0.12772457, 0.19654717), target1);
			target1 = MulAdd(src[i - 1][j], MF3x4(-0.076798744, -0.026944768, -0.24994318, 0.2515569, -0.16839856, 0.17563075, 0.30983326, -0.26057217, -0.07267306, -0.16690817, -0.028771983, -0.32779765), target1);
			target1 = MulAdd(src[i - 1][j + 1], MF3x4(-0.22670166, -0.08031973, 0.1576897, -0.09411961, 0.10889907, 0.09876773, -0.12708376, 0.20890583, 0.13792023, 0.046159253, 0.008415701, 0.028718324), target1);
			target1 = MulAdd(src[i][j - 1], MF3x4(0.123937644, -0.0040695923, 0.1577942, -0.25086892, -0.11906424, 0.024612824, 0.04019426, -0.20309904, -0.001790695, -0.022292957, -0.24705121, -0.020513516), target1);
			target1 = MulAdd(src[i][j], MF3x4(-0.12275696, 0.087533146, 0.22975677, 0.3249744, -0.46705425, 0.049937986, -0.3746097, 0.6908184, -0.02694045, 0.10467642, 0.24765752, 0.29053956), target1);
			target1 = MulAdd(src[i][j + 1], MF3x4(-0.085650265, 0.06399875, 0.16803174, -0.000924935, -0.012419805, 0.3505107, -0.013437306, -0.37681264, -0.06174721, 0.3525594, -0.7133205, 0.16013019), target1);
			target1 = MulAdd(src[i + 1][j - 1], MF3x4(0.2400495, 0.08462758, 0.025238732, -0.019882765, -0.09665332, -0.030001955, -0.10374011, -0.2661804, -0.1017717, -0.04910443, 0.102630705, -0.01290848), target1);
			target1 = MulAdd(src[i + 1][j], MF3x4(0.13510828, -0.09396734, -0.30896646, 0.13402982, 0.7047196, -0.09083812, 0.29420912, -0.30652946, 0.089854665, -0.04834406, 0.017005004, -0.22518355), target1);
			target1 = MulAdd(src[i + 1][j + 1], MF3x4(0.28510967, 0.04660653, 0.24457681, -0.21047631, -0.12409636, -0.5526988, -0.1340479, 0.2336875, -0.048938934, -0.31569406, -0.021553513, -0.084858574), target1);

			MF4 target2 = { -0.041260406, 0.20480168, -0.016556341, 0.021896001 };
			target2 = MulAdd(src[i - 1][j - 1], MF3x4(0.058698863, -0.07291426, 0.04927266, 0.09258057, -0.048297565, 0.05610951, 0.07047442, -0.07120319, -0.03516866, 0.0076037147, 0.07701455, -0.059423756), target2);
			target2 = MulAdd(src[i - 1][j], MF3x4(-0.0055849426, 0.26572028, -0.21616961, -0.042883366, 0.04323887, 0.04128688, -0.1975783, 0.15745145, 0.017314252, -0.26768935, 0.080519766, 0.021246549), target2);
			target2 = MulAdd(src[i - 1][j + 1], MF3x4(-0.045365453, 0.16887768, -0.21514243, -0.49443442, 0.016238604, -0.12318089, 0.21210986, 0.29339197, 0.008509125, -0.0120522, 0.14660002, 0.16444208), target2);
			target2 = MulAdd(src[i][j - 1], MF3x4(-0.18049234, 0.27750164, 0.48953623, 0.32381085, 0.13180427, -0.19170003, -0.042992454, -0.24161138, 0.02187773, -0.052547548, -0.23762631, -0.17446616), target2);
			target2 = MulAdd(src[i][j], MF3x4(0.10295366, -0.06758289, 0.3209139, -0.089126036, 0.045649666, 0.061549887, -0.22704688, 0.08373262, 0.062346827, -0.012463345, -0.2679532, -0.033193), target2);
			target2 = MulAdd(src[i][j + 1], MF3x4(0.028882261, -0.41653237, -0.55437064, -0.23836315, -0.10729088, 0.056782994, 0.2587744, 0.3095401, -0.057483524, 0.2876223, 0.21580297, 0.07463114), target2);
			target2 = MulAdd(src[i + 1][j - 1], MF3x4(0.014345448, 0.05962805, -0.2022189, -0.08993287, 0.070023656, 0.08089038, 0.114226155, 0.0025734142, -0.010230871, -0.0990795, 0.17906278, 0.048965868), target2);
			target2 = MulAdd(src[i + 1][j], MF3x4(0.26569575, -0.20329566, 0.40301713, 0.5406432, 0.4320893, 0.09291447, -0.24186778, -0.40646008, 0.08337033, 0.114029825, -0.17575161, -0.21976136), target2);
			target2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.23839538, -0.5789523, -0.0655242, -0.0007585647, -0.58420926, -0.0028022572, 0.040551513, -0.14223239, -0.08617295, 0.22481681, -0.015953997, 0.18862534), target2);

			MF4 target3 = { -0.32573584, 0.02118458, 0.06321103, 0.01701115 };
			target3 = MulAdd(src[i - 1][j - 1], MF3x4(0.07228457, 0.007666297, 0.0023270524, -0.13672906, -0.06545506, -0.049757745, 0.16956232, 0.048654493, 0.05838961, 0.02529347, -0.21557869, -0.12801598), target3);
			target3 = MulAdd(src[i - 1][j], MF3x4(0.14399123, 0.33404213, 0.30544546, -0.024566652, -0.07515048, -0.18194102, -0.3067775, -0.3386222, -0.06924871, 0.08277239, 0.30782035, 0.1812733), target3);
			target3 = MulAdd(src[i - 1][j + 1], MF3x4(-0.0034141026, 0.03465326, 0.13170029, 0.19363083, 0.07877697, 0.12887354, 0.31288412, 0.039260264, -0.14135145, -0.21657607, -0.08192631, -0.016260598), target3);
			target3 = MulAdd(src[i][j - 1], MF3x4(0.2796338, 0.3380564, -0.2591034, 0.053368755, 0.017104708, -0.18027966, -0.083344355, 0.29481766, -0.088741906, -0.03886714, 0.15531075, 0.34214082), target3);
			target3 = MulAdd(src[i][j], MF3x4(-0.35849893, 0.39669302, -0.4743166, -0.30070198, -0.04679741, 0.029014967, -0.11585943, 0.547813, 0.037943944, -0.3137137, -0.16505164, 0.1461349), target3);
			target3 = MulAdd(src[i][j + 1], MF3x4(-0.19912307, -0.69915354, 0.12588218, -0.25780293, 0.06785873, -0.06666295, 0.21257555, -0.30608517, 0.22777, 0.47556394, 0.12453673, -0.23966943), target3);
			target3 = MulAdd(src[i + 1][j - 1], MF3x4(-0.066451795, 0.036735266, 0.0883064, 0.2535588, 0.111621, 0.026139118, 0.02632312, -0.37550557, -0.026438652, -0.042137396, 0.026273955, -0.24945815), target3);
			target3 = MulAdd(src[i + 1][j], MF3x4(0.550942, -0.4508381, 0.0018671635, 0.21252398, -0.10602345, 0.13596801, -0.0023862422, 0.029529708, -0.06045382, 0.22975087, -0.1594863, -0.33607775), target3);
			target3 = MulAdd(src[i + 1][j + 1], MF3x4(-0.0114465775, 0.011813566, 0.09969644, 0.055403743, 0.02460606, 0.13673273, -0.22494976, -0.24256726, 0.024602994, -0.1862818, 0.015388349, 0.39983493), target3);

			conv2d_tf[destPos] = target1;
			conv2d_tf1[destPos] = target2;
			conv2d_tf2[destPos] = target3;
		}
	}
}

//!PASS 2
//!DESC Conv-4x3x3x24
//!IN conv2d_tf, conv2d_tf1, conv2d_tf2
//!OUT conv2d_1_tf, conv2d_1_tf1, conv2d_1_tf2
//!BLOCK_SIZE 8
//!NUM_THREADS 64

void Pass2(uint2 blockStart, uint3 threadId) {
	uint2 gxy = Rmp8x8(threadId.x) + blockStart;
	uint2 inputSize = GetInputSize();
	if (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {
		return;
	}

	float2 inputPt = GetInputPt();
	float2 pos = (gxy + 0.5f) * inputPt;

	// [ a, d, g ]
	// [ b, e, h ]
	// [ c, f, i ]
	MF4 a1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d1 = conv2d_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e1 = conv2d_tf.SampleLevel(sam, pos, 0);
	MF4 f1 = conv2d_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na1 = max(-a1, 0);
	MF4 nb1 = max(-b1, 0);
	MF4 nc1 = max(-c1, 0);
	MF4 nd1 = max(-d1, 0);
	MF4 ne1 = max(-e1, 0);
	MF4 nf1 = max(-f1, 0);
	MF4 ng1 = max(-g1, 0);
	MF4 nh1 = max(-h1, 0);
	MF4 ni1 = max(-i1, 0);

	a1 = max(a1, 0);
	b1 = max(b1, 0);
	c1 = max(c1, 0);
	d1 = max(d1, 0);
	e1 = max(e1, 0);
	f1 = max(f1, 0);
	g1 = max(g1, 0);
	h1 = max(h1, 0);
	i1 = max(i1, 0);

	MF4 a2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e2 = conv2d_tf1.SampleLevel(sam, pos, 0);
	MF4 f2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na2 = max(-a2, 0);
	MF4 nb2 = max(-b2, 0);
	MF4 nc2 = max(-c2, 0);
	MF4 nd2 = max(-d2, 0);
	MF4 ne2 = max(-e2, 0);
	MF4 nf2 = max(-f2, 0);
	MF4 ng2 = max(-g2, 0);
	MF4 nh2 = max(-h2, 0);
	MF4 ni2 = max(-i2, 0);

	a2 = max(a2, 0);
	b2 = max(b2, 0);
	c2 = max(c2, 0);
	d2 = max(d2, 0);
	e2 = max(e2, 0);
	f2 = max(f2, 0);
	g2 = max(g2, 0);
	h2 = max(h2, 0);
	i2 = max(i2, 0);

	MF4 a3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d3 = conv2d_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e3 = conv2d_tf2.SampleLevel(sam, pos, 0);
	MF4 f3 = conv2d_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na3 = max(-a3, 0);
	MF4 nb3 = max(-b3, 0);
	MF4 nc3 = max(-c3, 0);
	MF4 nd3 = max(-d3, 0);
	MF4 ne3 = max(-e3, 0);
	MF4 nf3 = max(-f3, 0);
	MF4 ng3 = max(-g3, 0);
	MF4 nh3 = max(-h3, 0);
	MF4 ni3 = max(-i3, 0);

	a3 = max(a3, 0);
	b3 = max(b3, 0);
	c3 = max(c3, 0);
	d3 = max(d3, 0);
	e3 = max(e3, 0);
	f3 = max(f3, 0);
	g3 = max(g3, 0);
	h3 = max(h3, 0);
	i3 = max(i3, 0);

	MF4 target = MF4(-0.09062037, 0.013100331, -0.030562, -0.0064230394);
	target = MulAdd(a1, MF4x4(-0.009462198, 0.067644134, 0.09776196, -0.06859017, -0.1816813, 0.053423163, -0.02265236, 0.06604943, 0.15899086, -0.15651219, 0.2919677, 0.00591133, 0.09306437, 0.047243804, -0.1389423, -0.0076663005), target);
	target = MulAdd(b1, MF4x4(0.23136483, 0.20969442, -0.25250545, -0.038510673, 0.06916893, -0.19306515, -0.07070081, 0.016512204, 0.05914443, 0.31841832, -0.15109769, 0.058795422, 0.0418041, -0.13008581, 0.15338552, 0.037921127), target);
	target = MulAdd(c1, MF4x4(0.023348259, 0.15947549, 0.16773324, 0.04159353, 0.113954544, -0.071491666, 0.12837915, -0.043326825, 0.058823302, 0.09453112, 0.017051624, 0.048308555, -0.10970718, -0.25019458, 0.074912935, -0.04076737), target);
	target = MulAdd(d1, MF4x4(0.036305163, -0.22121401, 0.120393604, -0.05099148, -0.10198376, -0.04498367, -0.08815256, 0.024565894, -0.04884751, -0.036884382, -0.24040928, -0.112012394, 0.005314592, -0.14346673, 0.04090868, 0.040303618), target);
	target = MulAdd(e1, MF4x4(0.32364944, 0.2346947, 0.13479401, -0.071001865, -0.092296354, -0.13325988, 0.18273465, 0.16443633, -0.138694, -0.1538144, 0.0001256584, 0.23658273, -0.055330865, 0.18081205, -0.14958258, 0.18050644), target);
	target = MulAdd(f1, MF4x4(0.30818513, -0.10282234, -0.14460294, 0.11525818, 0.15799633, -0.038440127, 0.07736027, -0.113209635, -0.03558696, 0.0027641046, 0.09750022, -0.035741746, -0.06724116, -0.11298426, -0.23708679, -0.08182236), target);
	target = MulAdd(g1, MF4x4(0.16450825, 0.014239063, -0.15482663, 0.011389393, 0.121237025, -0.056966547, -0.23891398, -0.07385608, -0.0919129, 0.1384911, 0.10602064, -0.08549364, -0.117471084, 0.045140628, -0.055791426, 0.11584021), target);
	target = MulAdd(h1, MF4x4(0.053284578, 0.084236816, 0.16935693, -0.16279462, -0.060930096, 0.13849908, 0.16018802, -0.007871505, 0.12076791, -0.06930294, -0.16473438, 0.12876272, -0.039502293, -0.064467184, 0.13885021, -0.09353176), target);
	target = MulAdd(i1, MF4x4(0.04007251, -0.0423664, -0.20841573, 0.025270352, 0.051647697, -0.086622365, -0.108722195, 0.03807204, 0.059649065, -0.0070362207, 0.04048331, 0.06589983, -0.014079206, -0.10045001, 0.09532272, -0.12775785), target);
	target = MulAdd(a2, MF4x4(0.15776722, -0.1468444, -0.026526975, -0.038875956, -0.36817524, -0.09478588, -0.27826226, 0.016944334, 0.009886105, -0.061800323, 0.0800291, -0.081642725, 0.051763505, -0.14510322, -0.12901913, 0.06997819), target);
	target = MulAdd(b2, MF4x4(-0.17539172, -0.29509535, 0.14361212, -0.09461951, 0.02858693, 0.1989715, 0.05904459, -0.09012477, 0.03901393, -0.09044802, 0.08358012, 0.052188553, -0.05505933, -0.048021372, 0.27836508, -0.035614084), target);
	target = MulAdd(c2, MF4x4(0.034031298, -0.034978155, -0.038415093, -0.09294941, 0.049487505, 0.15056923, -0.010052316, 0.08712324, 0.07430246, 0.17897835, -0.060980003, -0.08634773, -0.07403975, -0.026423855, -0.18169394, 0.007463145), target);
	target = MulAdd(d2, MF4x4(0.048213437, 0.16104779, 0.038785655, -0.033407986, 0.22063074, -0.053561423, 0.13353224, -0.26674026, 0.04884891, 0.030459542, -0.22288404, 0.06640239, 0.12854575, 0.029917246, 0.24786973, -0.1690474), target);
	target = MulAdd(e2, MF4x4(0.14981748, 0.17726701, 0.3075169, -0.0061602336, 0.070802234, 0.012225174, -0.11732834, -0.04439886, 0.062125243, 0.09351938, 0.4337808, -0.08277167, 0.25400677, -0.08523749, -0.3210451, -0.17889985), target);
	target = MulAdd(f2, MF4x4(-0.013666365, 0.09298701, -0.22515774, 0.06844796, -0.056414075, -0.04622639, 0.2661024, 0.16837521, -0.060347248, 0.42006207, 0.31325382, 0.040558435, -0.23408552, -0.3959543, 0.08528746, 0.04711839), target);
	target = MulAdd(g2, MF4x4(-0.21203883, 0.14807487, 0.10670431, 0.09823839, -0.0029566926, -0.14064936, -0.0062036305, 0.058999464, -0.119635604, -0.017831627, -0.024394974, -0.09484209, -0.05494034, 0.2234736, -0.18613186, 0.10272367), target);
	target = MulAdd(h2, MF4x4(-0.026449624, -0.07470873, -0.103021905, 0.036553413, -0.16811648, 0.010706488, -0.11658722, 0.16098383, -0.118867725, -0.30606326, -0.38222322, 0.08585665, 0.07455366, -0.083553374, 0.11151869, -0.19190635), target);
	target = MulAdd(i2, MF4x4(-0.113795616, 0.1331456, 0.114444636, 0.0071249725, 0.12230587, -0.017298486, -0.005261545, 0.01930602, 0.19144222, -0.0868461, -0.13227822, 0.18046889, 0.12061947, 0.107320294, -0.07637172, -0.034593552), target);
	target = MulAdd(a3, MF4x4(0.049325835, 0.020729464, -0.23382401, 0.15919043, -0.008479369, 0.15347077, 0.41359872, -0.061457418, 0.024845408, -0.15185645, -0.057010442, -0.09998088, 0.10153512, -0.09882405, 0.039735407, -0.077833496), target);
	target = MulAdd(b3, MF4x4(-0.36701423, 0.12649989, 0.018880492, -0.23008151, -0.052118823, 0.15917695, -0.11396803, 0.21387778, 0.08706439, -0.0038190812, 0.12580395, -0.18743886, 0.005943777, -0.055926796, 0.22107217, -0.15519042), target);
	target = MulAdd(c3, MF4x4(-0.117441535, 0.11953572, -0.15477178, -0.21330307, 0.033542704, -0.086117126, 0.040748667, 0.113893, -0.039779708, 0.06455176, -0.033797383, 0.045687508, 0.06263807, 0.040957358, -0.0007738094, -0.053097825), target);
	target = MulAdd(d3, MF4x4(0.14710459, -0.06704273, -0.021150973, -0.15517733, -0.011780557, -0.123433016, -0.5554903, 0.07073845, 0.037211616, -0.14225942, -0.13862026, -0.12025682, 0.09802159, 0.045993954, 0.21416502, -0.12655829), target);
	target = MulAdd(e3, MF4x4(0.33932889, -0.10832225, -0.10277331, -0.043458294, -0.080375, 0.07122225, 0.5117161, 0.45102793, 0.08851493, -0.19836949, 0.1128087, 0.14412156, 0.15872803, 0.35519516, -0.36955422, 0.22665614), target);
	target = MulAdd(f3, MF4x4(-0.2083875, 0.005418101, 0.1154246, 0.16369523, 0.0066285534, -0.15079136, -0.0024386873, -0.006123944, 0.1329886, 0.007733818, -0.078484625, 0.0073881904, 0.045415893, 0.13548672, -0.04421294, 0.17557195), target);
	target = MulAdd(g3, MF4x4(-0.06733927, 0.061143715, 0.11623754, 0.035660855, -0.16833517, 0.25015733, 0.16666088, 0.3536397, -0.17156921, 0.14590204, 0.0319748, -0.022740254, -0.081528045, -0.029098801, 0.106823295, 0.05240602), target);
	target = MulAdd(h3, MF4x4(-0.030105693, 0.07486713, 0.07255324, 0.26833382, 0.13944457, -0.12094807, -0.119364485, 0.008746426, -0.0543321, -0.23814397, 0.21626633, 0.19788063, -0.060222488, 0.013993159, -0.044926863, 0.10624144), target);
	target = MulAdd(i3, MF4x4(0.04872421, -0.1731085, 0.120799415, -0.262767, -0.01584661, 0.066874966, -0.23661989, -0.18333362, 0.04360596, 0.16124529, -0.024604535, -0.02463142, -0.051435392, -0.015720569, -0.08187193, 0.048288688), target);
	target = MulAdd(na1, MF4x4(0.049077168, -0.07886619, -0.061759558, -0.04904181, 0.39755592, -0.030000389, 0.13741177, 0.035482008, -0.0356009, 0.031532627, -0.2654997, 0.022695553, -0.12488769, 0.015674936, 0.10053729, -0.016251108), target);
	target = MulAdd(nb1, MF4x4(0.034757115, -0.22141235, 0.34255457, -0.01785397, 0.13844466, -0.17758907, 0.06551371, -0.054463834, 0.03203843, -0.13669081, 0.13089286, -0.08061962, 0.015957424, -0.0024440098, -0.10206851, -0.089845166), target);
	target = MulAdd(nc1, MF4x4(-0.0511128, -0.10826102, -0.28195792, 0.0077595203, -0.1147427, -0.0022921658, -0.07577954, -0.02045415, -0.060518377, -0.11451084, 0.018158037, -0.0758857, -0.04422985, 0.012489414, -0.016101263, 0.061439708), target);
	target = MulAdd(nd1, MF4x4(-0.03760036, 0.13497229, -0.13668093, 0.07768455, -0.15663894, -0.015719853, 0.21031374, 0.1781295, -0.14109309, -0.03143449, -0.020708034, 0.082145125, 0.029068671, 0.16775839, -0.060003906, 0.071289144), target);
	target = MulAdd(ne1, MF4x4(0.33949512, 0.11439767, -0.030989401, 0.048677433, 0.21668954, -0.09781232, -0.14430745, -0.34149325, 0.04961082, 0.13556859, -0.02967883, -0.019534707, 0.112177946, -0.0950136, 0.02612632, -0.1142915), target);
	target = MulAdd(nf1, MF4x4(-0.16193709, 0.12953411, 0.12638013, 0.07118955, -0.09868655, 0.05682677, -0.03974761, 0.14830436, 0.016494498, 0.04290563, -0.107214145, -0.0006455558, 0.15607493, 0.22610466, 0.23997377, 0.21541154), target);
	target = MulAdd(ng1, MF4x4(-0.13969646, -0.03359856, 0.12332616, 0.024957852, -0.264063, -0.027087519, 0.16026239, 0.18871038, 0.12738967, -0.070992924, 0.058890942, -0.055569854, 0.07901736, -0.10643202, 0.08499172, -0.07838089), target);
	target = MulAdd(nh1, MF4x4(0.124158695, 0.04502674, -0.080311716, 0.013808018, 0.0370118, -0.16594483, -0.16791067, 0.05448626, -0.03551704, 0.006355477, 0.26084647, 0.12521335, -0.004537222, -0.017335514, -0.12183743, 0.021074474), target);
	target = MulAdd(ni1, MF4x4(-0.022497809, 0.04964908, 0.14643028, -0.04685759, -0.06790267, 0.11746793, 0.12926494, -0.082243346, -0.053480923, 0.06610809, -0.04575657, -0.14319976, -0.09223617, 0.10878509, -0.05621081, 0.16550247), target);
	target = MulAdd(na2, MF4x4(-0.28332457, 0.05198234, 0.021976635, -0.1545899, -0.26678282, -0.047813956, -0.023821756, -0.101214804, 0.07505883, 0.05556278, 0.017566912, 0.00901856, -0.022323653, 0.1653073, 0.08053188, -0.18955535), target);
	target = MulAdd(nb2, MF4x4(0.084919475, 0.03962379, -0.13510302, 0.24873632, -0.06863436, 0.029294679, 0.016317705, -0.043712415, -0.028959788, 0.017755143, -0.05474792, -0.055838227, 0.08769533, -0.09412337, -0.023203408, -0.0640265), target);
	target = MulAdd(nc2, MF4x4(-0.110101126, -0.032489337, 0.02593033, 0.15959314, -0.044097103, -0.18824866, 0.08125642, -0.0077189617, -0.054190274, -0.14331457, 0.1452974, 0.07808066, 0.0021549438, -0.03174141, 0.017612346, -0.15539496), target);
	target = MulAdd(nd2, MF4x4(-0.088953294, -0.029799841, 0.11556197, 0.04862062, 0.066503406, -0.114064194, 0.09255826, -0.1833335, -0.01641819, -0.119497, 0.2961799, -0.2780695, -0.12567733, 0.0024600243, -0.11751205, 0.085669436), target);
	target = MulAdd(ne2, MF4x4(-0.21532503, -0.06343075, -0.27015615, 0.068540476, -0.06858675, -0.062484156, 0.03682217, -0.1015083, 0.107420795, 0.012092155, -0.22166798, 0.028644597, -0.10172646, 0.19677241, 0.37931946, -0.11699309), target);
	target = MulAdd(nf2, MF4x4(0.07044547, -0.03793531, 0.17182013, 0.008134154, 0.0050753267, 0.058524463, -0.29959077, -0.079782486, 0.06422465, -0.44226143, -0.27561387, -0.14839257, 0.24578299, 0.24039108, -0.07351824, 0.034930374), target);
	target = MulAdd(ng2, MF4x4(0.1892026, -0.054502696, -0.05670299, -0.03181167, 0.035967033, 0.18241122, 0.00743329, 0.015681073, -0.056629453, 0.11829241, -0.07440575, -0.023615826, -0.009568993, -0.03544514, -0.05925388, -0.40062532), target);
	target = MulAdd(nh2, MF4x4(-0.012591867, 0.069327325, 0.20525102, -0.0013599707, 0.20637867, 0.053142715, 0.08542395, 0.0015770206, 0.0006431645, 0.21245757, 0.16769366, -0.0030028354, -0.19049928, -0.07689201, -0.031236758, 0.22773638), target);
	target = MulAdd(ni2, MF4x4(0.08173383, -0.095775105, -0.08555914, -6.735811e-05, -0.038772196, 0.021698473, 0.04046729, 0.07664872, -0.00024131182, 0.20962766, 0.18627205, -0.035633747, -0.13656121, -0.050837196, 0.07260766, -0.019978348), target);
	target = MulAdd(na3, MF4x4(-0.16073698, 0.14160293, 0.12324934, 0.20341478, -0.0019186502, -0.095708326, -0.2297202, 0.35728905, -0.09427626, 0.062210754, -0.012826292, 0.118804015, -0.08991538, 0.06391433, -0.023036718, -0.017481891), target);
	target = MulAdd(nb3, MF4x4(0.21371883, -0.16740565, -0.10288582, -0.061600383, 0.020964885, -0.023439301, 0.18262915, -0.31056783, -0.093428515, -0.30865392, -0.040038906, 0.069449544, 0.07479101, -0.07418401, -0.2324029, 0.1234252), target);
	target = MulAdd(nc3, MF4x4(-0.24855302, -0.12967765, 0.02631683, 0.08294003, -0.016402971, 0.14255002, 0.0048186355, -0.0011596545, 0.06271189, -0.026687965, 0.020020025, -0.05608053, -0.04504705, -0.10878176, 0.0013364048, 0.006674377), target);
	target = MulAdd(nd3, MF4x4(-0.05265867, 0.039263245, 0.08444624, 0.025635105, 0.080403246, 0.3593395, 0.3254258, 0.043744642, 0.049711503, -0.17298554, 0.076980025, 0.08564068, 0.055967227, -0.025387138, -0.12774122, 0.06460898), target);
	target = MulAdd(ne3, MF4x4(0.10153962, 0.1773, 0.39640376, -0.19406912, 0.21126994, 0.082484245, -0.49809954, -0.026066823, -0.069782086, 0.24188274, -0.13548844, -0.29941857, 0.06539237, -0.2640235, 0.34804615, -0.12240826), target);
	target = MulAdd(nf3, MF4x4(0.0077373167, -0.1192639, -0.11340615, -0.22332144, 0.024052242, 0.07247779, 0.01824934, 0.27204347, -0.12280574, -0.15037231, 0.095412664, -0.09667618, -0.045748595, -0.069017254, 0.04676958, -0.11994603), target);
	target = MulAdd(ng3, MF4x4(0.11430846, -0.07280232, -0.12316846, -0.076348506, 0.14808905, -0.29144016, -0.24595666, 0.18917578, 0.12346525, 0.06044025, -0.2605574, -0.2944082, 0.029403422, 0.10978217, -0.14474128, 0.016708253), target);
	target = MulAdd(nh3, MF4x4(0.05979043, -0.07152787, -0.19449393, 0.003888642, -0.07616637, 0.18699367, -0.028180948, 0.29517344, 0.09553033, 0.07179247, -0.30424592, -0.13225375, 0.028066052, 0.012709331, 0.006618433, -0.1427098), target);
	target = MulAdd(ni3, MF4x4(0.041162595, 0.18586132, -0.009566293, 0.029985288, -0.13142577, -0.18026744, 0.20692593, -0.03168997, -0.032814153, -0.18140802, 0.10108317, -0.004236778, 0.035565984, 0.0060556303, -0.0098911915, -0.08988839), target);
	conv2d_1_tf[gxy] = target;
	
	target = MF4(0.07955021, -0.009849892, 0.05029401, -0.12505546);
	target = MulAdd(a1, MF4x4(0.064515434, 0.07896172, 0.056155425, 0.044425253, 0.03319016, -0.054605387, -0.4591473, 0.15511878, 0.034813322, 0.0672562, 0.05701353, 0.040412407, -0.038797975, -0.111860834, 0.053084996, -0.09889108), target);
	target = MulAdd(b1, MF4x4(-0.19500382, -0.38966596, 0.27081028, -0.20423058, -0.035951976, -0.22931336, -0.094351776, 0.07632106, -0.16903882, -0.09205736, -0.0133898435, -0.025871782, 0.026594864, 0.09540177, -0.19411358, -0.019835787), target);
	target = MulAdd(c1, MF4x4(0.033789452, 0.070497066, -0.072486654, 0.15952013, 0.005707006, 0.099570274, 0.10225775, 0.14358646, 0.030362945, 0.04101203, 0.041384347, -0.07857492, 0.0101447, -0.13572751, -0.0014982093, -0.21828102), target);
	target = MulAdd(d1, MF4x4(-0.06541299, -0.065143906, 0.070729114, 0.16001381, 0.03785971, 0.10330557, -0.12786262, 0.23345129, -0.079743266, -0.19548073, 0.06546381, -0.3466734, 0.052256253, 0.17547274, 0.08082544, -0.002740424), target);
	target = MulAdd(e1, MF4x4(-0.25474778, 0.3409222, -0.16752993, -0.2593963, 0.22428669, 0.12370032, 0.201332, 0.2880896, 0.05886888, 0.28148982, -0.078226954, -0.10041725, -0.046689507, 0.0326885, 0.10199703, 0.13900283), target);
	target = MulAdd(f1, MF4x4(0.13756008, -0.007290373, -0.3277049, -0.081920624, -0.13261138, 0.10012489, 0.16701259, 0.095596135, 0.11018003, 0.08671664, 0.007405438, -0.069064125, -0.06399627, -0.20199764, -0.14141648, -0.18114863), target);
	target = MulAdd(g1, MF4x4(-0.06398666, -0.14905818, -0.08662983, -0.14592336, -0.019165145, -0.16002633, 0.02595079, -0.032384723, -0.06226262, 0.11195063, -0.059623078, 0.08347643, -0.07747154, -0.05067411, -0.011761259, 0.04478109), target);
	target = MulAdd(h1, MF4x4(-0.110994905, 0.16579364, 0.05735814, 0.08335136, 0.0023429485, -0.035295088, -0.00767387, 0.039022036, 0.045022078, -0.14819291, -0.11657396, 0.114125244, -0.112737395, 0.03421371, 0.123605475, -0.094038226), target);
	target = MulAdd(i1, MF4x4(0.14619811, -0.13335696, -0.09799096, -0.015030551, -0.027455918, -0.052438136, -0.014773566, -0.06363389, 0.12765555, -0.060070448, -0.05204619, 0.20176068, 0.020521173, 0.0805951, 0.064473, -0.0071453564), target);
	target = MulAdd(a2, MF4x4(-0.5381485, 0.016816406, 0.03575291, 0.15307717, -0.18513149, -0.029921992, 0.2622421, 0.17963228, -0.002844402, -0.058329333, 0.072945744, -0.11042211, 0.006249197, 0.11601606, 0.058575515, 0.064850174), target);
	target = MulAdd(b2, MF4x4(-0.42793107, 0.36473498, 0.11899247, 0.26988775, 0.11106695, 0.08952316, 0.014755224, -0.08844807, -0.08071252, -0.043227013, -0.043939825, -0.18867648, 0.051046275, 0.21520744, 0.005522403, -0.054136444), target);
	target = MulAdd(c2, MF4x4(-0.09239439, -0.12671697, -0.02282582, 0.1047466, -0.043446694, 0.024044901, -0.0021552334, -0.15775962, 0.028607333, -0.097138464, -0.043680545, -0.07058451, 0.11537684, 0.113663144, 0.18539715, -0.02583076), target);
	target = MulAdd(d2, MF4x4(0.06783846, -0.030368762, -0.032593627, -0.115257286, -0.14801481, -0.08790775, 0.15180242, 0.09927532, -0.13861379, 0.02403033, 0.07966528, -0.02592995, 0.18966958, 0.13048325, -0.07206841, 0.07954041), target);
	target = MulAdd(e2, MF4x4(0.01556961, -0.025707101, -0.035667323, 0.019550703, -0.06561516, 0.029371614, -0.04590116, 0.004590475, 0.3857005, 0.15660062, 0.2047054, -0.22268668, -0.15727302, -0.24878927, -0.13349286, 0.09746729), target);
	target = MulAdd(f2, MF4x4(-0.06613807, -0.35448387, -0.03103906, -0.14949797, 0.2575997, 0.24856186, -0.12529412, -0.096302986, 0.077257074, -0.24450381, 0.115296856, -0.15376714, 0.02283929, 0.020484464, -0.057252582, 0.07690077), target);
	target = MulAdd(g2, MF4x4(0.03167533, 0.14044689, 0.03394118, 0.02033927, -0.058176804, 0.09426579, -0.047503363, 0.050972216, 0.08332001, 0.13845564, 0.0054333988, 0.0060199215, -0.041817743, -0.055159353, -0.033139117, -0.06767), target);
	target = MulAdd(h2, MF4x4(0.13912874, 0.042053323, 0.14049628, -0.05678915, 0.096634954, -0.026468944, -0.05657413, -0.018260032, 0.2512966, 0.12660152, 0.11393381, 0.16540478, -0.1303705, 0.13751519, -0.069556914, 0.0981919), target);
	target = MulAdd(i2, MF4x4(0.02321638, 0.10667205, 0.027153758, 0.009282765, 0.07528545, -0.17536609, -0.030338852, 0.07694229, 0.058190364, -0.052485015, -0.16589753, 0.0053109983, -0.062089816, 0.016174713, 0.1266296, 0.16837646), target);
	target = MulAdd(a3, MF4x4(-0.065759346, 0.06169766, -0.00085500855, -0.008405182, -0.0017208391, 0.0891801, -0.002727633, -0.09190625, -0.055329803, -0.078719944, 0.13154171, 0.022970447, -0.032412775, 0.06774816, -0.08766216, 0.005649683), target);
	target = MulAdd(b3, MF4x4(-0.05727856, 0.41547912, 0.09231337, 0.21398218, -0.04456715, -0.16443647, -0.33590144, 0.054098953, 0.0049725566, -0.1778281, 0.14938372, -0.13269553, 0.103052735, 0.09907562, -0.09025013, 0.071525946), target);
	target = MulAdd(c3, MF4x4(0.06079739, -0.15564673, 0.017866762, -0.17732425, -0.01921053, 0.20981815, 0.07016076, 0.012785, 0.039263856, 0.071297675, -0.031223306, 0.0012242222, 0.008279209, -0.11378741, 0.14638698, 0.015245047), target);
	target = MulAdd(d3, MF4x4(0.07295158, 0.14406429, -0.009283162, -0.08257508, 0.24989437, -0.101510875, -0.20831217, -0.14678863, -0.20545089, -0.03671918, -0.024620444, 0.0022859722, 0.16560118, 0.10648521, 0.01309449, -0.16882543), target);
	target = MulAdd(e3, MF4x4(-0.3688647, -0.06613055, -0.118553065, 0.066723585, -0.05839009, -0.05345417, -0.025808314, -0.051553134, 0.013860212, 0.1380767, -0.15950254, 0.039316524, 0.004648086, -0.49201876, -0.086399294, 0.067151815), target);
	target = MulAdd(f3, MF4x4(0.00816185, -0.094140545, -0.03045964, 0.005748951, -0.10508545, 0.06579157, -0.03133883, -0.036670756, 0.0965362, -0.059619486, 0.011463898, -0.13590227, -0.007581943, 0.014755039, 0.009631372, 0.05379326), target);
	target = MulAdd(g3, MF4x4(-0.16141598, 0.09554762, 0.033254117, 0.16967952, 0.035996404, -0.013887896, -0.06629002, 0.0038405391, 0.056517866, 0.024495421, -0.09365325, 0.08944311, 0.08264677, 0.05784231, -0.0544246, 0.034719754), target);
	target = MulAdd(h3, MF4x4(0.16916971, -0.04140406, -0.17009412, -0.057115063, -0.052563947, 0.12703355, 0.13672756, 0.055926114, 0.2646138, 0.08260617, -0.06438002, 0.34781212, 0.09432193, 0.002425348, 0.108481385, -0.011278688), target);
	target = MulAdd(i3, MF4x4(0.044969093, -0.048657022, 0.06174559, -0.00028727736, -0.20242731, -0.0149739245, 0.14471562, 0.06956492, -0.008388136, -0.059729554, 0.063841276, 0.04924184, 0.025793945, 0.06710163, -0.033776682, -0.035713058), target);
	target = MulAdd(na1, MF4x4(0.076875985, -0.101878025, -0.15802802, -0.124973774, -0.009670392, 0.013886556, -0.17401616, 0.13792926, 0.10774549, -0.30876774, -0.11229718, 0.010819886, 0.1175339, 0.08548831, -0.045388985, 0.05727834), target);
	target = MulAdd(nb1, MF4x4(0.11111217, 0.46312273, -0.4471567, 0.019250406, -0.040287044, 0.24528493, 0.21994363, -0.070748396, 0.20804761, 0.24140677, -0.07676276, 0.07941381, 0.1852395, -0.083701044, 0.04119184, -0.034684047), target);
	target = MulAdd(nc1, MF4x4(-0.11130858, -0.15563098, -0.16141221, -0.014236188, -0.0009617971, -0.11093832, -0.088078424, -0.1321414, -0.056676403, -0.09986668, -0.013136506, 0.064173006, -0.02908289, 0.028941281, 0.1568584, 0.13180308), target);
	target = MulAdd(nd1, MF4x4(-0.07680166, 0.147653, -0.029404428, -0.07403926, -0.3100197, 0.055024274, -0.1506152, 0.48132184, 0.11450713, -0.18744734, -0.092221424, -0.035802577, -0.060549777, -0.14425454, -0.08181204, 0.03446898), target);
	target = MulAdd(ne1, MF4x4(0.102829054, -0.19427535, -0.038133133, -0.0026712175, -0.1435574, -0.15067317, 0.1119409, 0.1685437, -0.10200671, 0.13222018, 0.08152995, 0.0024931647, 0.0691679, 0.048254304, -0.17357215, -0.13524754), target);
	target = MulAdd(nf1, MF4x4(-0.14587823, -0.15835984, -0.11198749, 0.0052520167, 0.1467123, -0.2707834, -0.072800644, -0.055191144, -0.10704317, -0.086199924, -0.014983923, 0.14019626, 0.017186088, 0.11358031, 0.15477349, 0.15759338), target);
	target = MulAdd(ng1, MF4x4(0.083639115, 0.14501223, -0.0065951888, 0.13890846, 0.09335459, 0.042398855, -0.09189259, 0.24306288, 0.020636987, 0.04164843, 0.04502632, -0.13329937, 0.058893397, 0.049639706, 0.071825825, -0.049217906), target);
	target = MulAdd(nh1, MF4x4(0.07009161, -0.03437479, -0.013031761, -0.093077734, 0.08663319, 0.085103504, 0.16337705, -0.027592715, -0.12227255, 0.14818181, 0.040996075, -0.055277664, -0.040362116, -0.030087778, -0.003645583, 0.056727875), target);
	target = MulAdd(ni1, MF4x4(-0.11545688, 0.060049064, -0.093949065, 0.02338161, 0.026170302, 0.026379922, 0.069043785, 0.05519452, -0.16188988, 0.04973363, 0.06749572, -0.14809126, -0.14064413, -0.041582227, -0.023158424, -0.039642867), target);
	target = MulAdd(na2, MF4x4(-0.28626567, 0.29348546, 0.07102445, -0.050440844, 0.15740375, -0.17452855, -0.16708957, 0.06744935, 0.06025843, 0.06482132, -0.034723394, -0.017227422, 0.12390885, 0.04888057, 0.006409584, -0.010196381), target);
	target = MulAdd(nb2, MF4x4(-0.07097389, -0.15076311, 0.13472012, -0.13246837, -0.064360276, 0.16760628, -0.12776206, 0.015533123, 0.13487455, -0.20071363, 0.0923309, 0.08138427, -0.009274919, -0.15565452, 0.17644402, -0.024042914), target);
	target = MulAdd(nc2, MF4x4(-0.023358675, 0.10211017, -0.036640793, -0.108112216, 0.06913507, -0.09594437, 0.036107562, 0.05066462, 0.08739385, 0.0011691673, 0.09453315, -0.02394334, -0.14005467, -0.016525272, -0.0994038, 0.06565737), target);
	target = MulAdd(nd2, MF4x4(-0.371338, 0.19144624, 0.095799066, 0.093133144, 0.09130418, 0.03945617, -0.018656345, -0.12886268, 0.20124264, 0.029764706, -0.13751945, -0.026953662, -0.1874983, -0.040866558, 0.05003749, 0.17660773), target);
	target = MulAdd(ne2, MF4x4(-0.051123757, 0.21025416, 0.0123157445, -0.069181696, -0.091609724, -0.079943225, 0.130711, 0.14694354, -0.12574539, -0.30329394, -0.10366516, -0.22330226, 0.24131827, 0.45112535, 0.07089889, 0.13600409), target);
	target = MulAdd(nf2, MF4x4(0.15595976, 0.24464798, 0.002488955, 0.050141588, -0.29219496, -0.17198776, 0.123318285, 0.054613084, 0.0036146704, 0.1652407, 0.0265562, 0.093859114, -0.08342194, -0.18661366, 0.07525819, -0.13866663), target);
	target = MulAdd(ng2, MF4x4(-0.12563816, -0.08927056, 0.025488816, -0.062464394, 0.038224597, -0.057591602, 0.016130082, 0.004603661, -0.105193645, -0.116210036, -0.0005738929, 0.03006333, 0.15265524, 0.157916, 0.009369363, 0.00011561189), target);
	target = MulAdd(nh2, MF4x4(-0.1587168, -0.06610889, -0.11454969, 0.09324059, -0.073291466, 0.011250312, -0.0021259703, 0.03251535, -0.021842942, 0.031610303, -0.08053953, -0.17813778, -0.01840217, 0.019417001, 0.12612307, 0.0890873), target);
	target = MulAdd(ni2, MF4x4(-0.0463806, -0.13481244, 0.022312263, -0.0063249297, -0.00767204, 0.1365426, 0.041454747, -0.077865794, 0.037678037, 0.09067563, 0.12991777, -0.03874696, 0.13317509, -0.019026265, -0.14676699, -0.13473623), target);
	target = MulAdd(na3, MF4x4(0.037564214, -0.0032738533, -0.03767511, 0.03820596, -0.14136639, 0.17992534, 0.058318965, -0.063095406, -0.006603518, 0.0120609235, -0.025056547, 0.032933716, 0.12113113, -0.10462842, 0.063647404, -0.04450857), target);
	target = MulAdd(nb3, MF4x4(0.24578053, -0.3156469, -0.35252848, -0.1055502, 0.036395214, 0.27580422, 0.036550306, -0.006894677, 0.10412757, 0.08568412, -0.022747902, -0.008680229, -0.05400555, -0.11050038, 0.051955782, -0.114774995), target);
	target = MulAdd(nc3, MF4x4(-0.15854524, 0.23624359, 0.07096151, 0.15719925, -0.0011587485, -0.30296972, -0.1931699, -0.08979758, 0.0246722, -0.028834311, 0.06220738, -0.01632116, -0.008921576, 0.033888046, -0.09395318, -0.011260361), target);
	target = MulAdd(nd3, MF4x4(0.018795056, -0.02822718, 0.009791691, 0.06166571, -0.20967379, 0.34762847, 0.077140674, 0.086514324, 0.28947103, -0.14330834, -0.078796394, 0.09474662, -0.092306405, -0.14832185, -0.050533596, 0.049030673), target);
	target = MulAdd(ne3, MF4x4(-0.045679964, 0.23489015, 0.15668613, 0.1235559, -0.22028416, -0.13657422, -0.033590022, -0.15810567, 0.18728013, -0.18127815, 0.36396962, -0.053243574, -0.06456213, 0.49338925, 0.026941797, -0.009633453), target);
	target = MulAdd(nf3, MF4x4(-0.16466625, -0.24371772, -0.03436447, -0.07062408, 0.059187494, -0.26871908, -0.12203007, -0.05496175, 0.057084855, 0.1304957, 0.08178971, 0.15224245, 0.023345131, -0.019234858, -0.034386877, 0.03538095), target);
	target = MulAdd(ng3, MF4x4(0.114277564, -0.008035584, 0.023078745, -0.14307536, -0.038258925, -0.122582935, 0.0015441746, 0.030634085, 0.2552187, -0.11622358, 0.025188513, -0.30211052, -0.048941914, -0.060030323, 0.019205015, -0.056735426), target);
	target = MulAdd(nh3, MF4x4(0.038009048, -0.025127387, 0.053799044, 0.09742052, -0.039442886, -0.2847006, -0.14175558, -0.06777446, -0.103426784, -0.18430014, 0.047908068, -0.11819306, -0.09634806, -0.020778535, -0.09947065, 0.057285), target);
	target = MulAdd(ni3, MF4x4(-0.11968771, -0.02741084, -0.006469873, -0.028502962, 0.05344909, -0.0045341062, -0.06826778, -0.10911563, 0.004165804, 0.18168798, 0.06862181, 0.041413423, -0.015367704, -0.08168733, 0.031232912, -0.00019088654), target);
	conv2d_1_tf1[gxy] = target;

	target = MF4(-0.02066643, 0.05799956, -0.04733981, 0.08521742);
	target = MulAdd(a1, MF4x4(0.051907405, 0.16668987, -0.041336834, 0.05314295, 0.10121027, -0.14798506, -0.19019037, 0.043592982, 0.12040883, 0.09233267, 0.11772148, -0.041334935, -0.07539924, 0.09756673, 0.052319244, -0.10528184), target);
	target = MulAdd(b1, MF4x4(-0.31250992, 0.30685386, -0.055270895, 0.06475109, -0.08800503, -0.26494658, 0.31591013, -0.11202835, -0.15133889, 0.10488629, 0.078151636, -0.043050244, -0.060199156, 0.044168193, -0.001986329, -0.1915024), target);
	target = MulAdd(c1, MF4x4(0.068178676, -0.10042213, 0.010896375, -0.08526234, 0.091550335, 0.03174787, -0.098797485, 0.0638641, 0.0039022998, -0.078803785, -0.08426419, -0.06165455, -0.17049576, 0.056151845, 0.05997152, -0.117358774), target);
	target = MulAdd(d1, MF4x4(-0.15624808, 0.1027479, -0.067923464, 0.0570026, 0.107332714, -0.14162563, -0.17560329, 0.063346066, 0.09616241, 0.15213029, 0.024794457, -0.16448957, 0.21509686, 0.084382094, 0.102330364, -0.21816911), target);
	target = MulAdd(e1, MF4x4(0.11183052, -0.00036459934, 0.09746083, -0.1979322, -0.32267392, -0.084034644, 0.051167414, -0.029009778, -0.03322436, 0.13016255, -0.048553534, -0.20068704, -0.16644834, 0.24280354, -0.14127132, -0.05889483), target);
	target = MulAdd(f1, MF4x4(0.116823174, -0.2189612, -0.18030761, -0.14347109, 0.09478377, 0.15303472, 0.020818545, 0.15843435, 0.17000113, -0.047443952, 0.023488792, -0.060115594, 0.04487726, 0.04284613, 0.28725752, -0.47257307), target);
	target = MulAdd(g1, MF4x4(-0.15223634, 0.060410198, 0.0061263107, 0.0069172834, 0.13158661, -0.0036422606, 0.051183105, 0.04613147, -0.00075578305, 0.08267924, -0.010239358, 0.12761061, -0.07420807, 0.073114, 0.0007402298, 0.1350364), target);
	target = MulAdd(h1, MF4x4(0.13506427, -0.10019588, 0.009954305, -0.177603, -0.2014582, 0.019459682, 0.05640779, 0.047030263, -0.05054245, -0.104332894, 0.0075405543, 0.1964969, -0.017293537, -0.19851471, -0.06654235, -0.20962352), target);
	target = MulAdd(i1, MF4x4(-0.038729187, -0.01076603, 0.004724392, 0.122694254, 0.04339784, -0.029253284, -0.014725128, -0.0014454263, -0.100780874, -0.14574462, -0.2107873, 0.042566143, 0.052845504, -0.12460765, -0.12877604, -0.165259), target);
	target = MulAdd(a2, MF4x4(-0.30916938, -0.21853267, 0.074507885, 0.06950878, 0.15405503, 0.19704042, 0.07762092, -0.0027483252, -0.047830105, 0.19999562, 0.06641897, -0.07683977, -0.04574573, -0.026720403, 0.06741639, -0.040291373), target);
	target = MulAdd(b2, MF4x4(-0.1436382, -0.14481016, 0.3962691, 0.4429137, -0.14254951, 0.1000112, 0.044832285, -0.11440693, -0.05707115, 0.036592014, 0.16755657, -0.106351, 0.06614667, -0.022506362, -0.020292178, -0.057136156), target);
	target = MulAdd(c2, MF4x4(0.073906116, -0.10937066, 0.086583436, 0.08275346, 0.02353698, -0.0046872413, -0.03486367, -0.08950485, -0.08803857, 0.056406617, 0.031082897, 0.06083862, 0.045077324, -0.061910506, -0.11063123, -0.01527173), target);
	target = MulAdd(d2, MF4x4(0.2718467, -0.21935192, -0.062664755, -0.1255679, 0.10553025, -0.006460559, -0.027146982, -0.015253822, -0.07748728, 0.073824674, 0.06018315, 0.1002592, 0.08035026, -0.15977937, -0.055322386, -0.040088616), target);
	target = MulAdd(e2, MF4x4(0.028033856, -0.016236208, -0.12429306, 0.13901961, 0.04981061, -0.05739222, -0.13064933, -0.16948193, -0.008593147, -0.031754505, 0.10665931, -0.13934475, 0.01627173, 0.072957866, -0.087536804, 0.12674862), target);
	target = MulAdd(f2, MF4x4(-0.1523727, -0.00082214887, 0.14283441, -0.031603288, -0.045878753, -0.19672535, -0.05026138, 0.042562414, 0.14194039, 0.04421849, -0.20919429, 0.18679811, -0.10887334, -0.032573055, 0.22349553, -0.065408655), target);
	target = MulAdd(g2, MF4x4(0.027553588, -0.122095294, -0.046353463, -0.111806914, -0.08844832, 0.13921359, -0.0010978511, 0.008194451, 0.13961516, 0.046672624, 0.10129705, -0.09637145, -0.08699736, 0.0083460985, -0.044584583, 0.14229134), target);
	target = MulAdd(h2, MF4x4(0.07393346, 0.1147128, -0.02851608, 0.021714512, 0.025452064, -0.17753085, 0.0027432854, 0.040008847, 0.16259173, -0.08370451, 0.13976301, -0.07063936, -0.24262139, -0.07672828, -0.2021094, 0.29102072), target);
	target = MulAdd(i2, MF4x4(0.009530462, 0.04909453, 0.018228829, -0.005528198, -0.04922174, -0.024972908, -0.07065127, 0.04544319, -0.025519563, -0.13601463, -0.18582825, 0.035100814, -0.03548451, 0.061287835, 0.20247467, -0.15797156), target);
	target = MulAdd(a3, MF4x4(0.32211515, -0.080116086, 0.021152286, -0.08237667, -0.23303492, 0.008709412, -0.1473173, 0.07000086, 0.03955907, 0.14984958, -0.0121722715, -0.055429686, -0.016413981, -0.08430293, 0.025234051, -0.062006578), target);
	target = MulAdd(b3, MF4x4(-0.42957792, 0.006551594, -0.022962485, 0.1400893, 0.28009745, 0.11802908, 0.015169489, 0.0024414742, -0.22848248, -0.020315299, -0.010993182, 0.0418814, -0.13582, -0.17743196, -0.018863266, -0.12331709), target);
	target = MulAdd(c3, MF4x4(-0.08963217, -0.07752845, -0.019306721, 0.061603975, 0.112303145, 0.09211919, -0.08167867, 0.05052119, 0.020961992, -0.037811935, 0.016923647, -0.026790423, 0.10175015, -0.006385778, -0.063822776, 0.028055048), target);
	target = MulAdd(d3, MF4x4(-0.10889496, 0.2475616, -0.023258686, -0.14437376, 0.049249854, -0.063944146, -0.0240011, -0.17432576, -0.18791446, 0.11263927, 0.0078009875, -0.080485724, 0.26911402, -0.12907211, -0.01755262, -0.16863008), target);
	target = MulAdd(e3, MF4x4(0.35460088, -0.17767274, -0.16858551, -0.23729539, 0.18419053, 0.20926027, -0.088426255, 0.023356354, 0.26511818, -0.0020759383, 0.2859238, -0.07675482, 0.12014907, 0.14443012, -0.12332029, -0.11205155), target);
	target = MulAdd(f3, MF4x4(0.19667232, 0.07352294, -0.014793962, 0.063952744, -0.01725952, 0.071818754, 0.064658605, -0.0009676536, -0.029578352, -0.18851563, -0.037685324, -0.26275456, -0.123520866, 0.12790628, -0.1469099, 0.12465433), target);
	target = MulAdd(g3, MF4x4(0.05387382, -0.030488258, 0.04638846, 0.20085673, -0.11875065, -0.029343707, -0.022595167, 0.06786304, 0.23092568, 0.018377172, -0.010349685, 0.14835137, -0.0047257696, -0.027649017, 0.0489728, -0.031893965), target);
	target = MulAdd(h3, MF4x4(-0.25763837, -0.075889885, 0.17264624, 0.035472356, -0.124957025, 0.00060394197, 0.022995198, 0.05463222, 0.0093447, 0.060911383, 0.07876506, 0.10564838, -0.05013418, 0.06583616, -0.025807798, -0.2883304), target);
	target = MulAdd(i3, MF4x4(0.043661144, -0.1159315, -0.1831051, 0.07473963, 0.07783108, 0.1876957, 0.01314648, -0.10861117, -0.088689655, 0.07296666, -0.026898766, 0.12702313, 0.032419875, 0.051234853, -0.06522966, 0.014740134), target);
	target = MulAdd(na1, MF4x4(-0.023981575, 0.0260433, 0.008456327, -0.041390125, 0.23708202, 0.027028535, 0.011300614, 0.25251132, -0.041091874, -0.113069616, -0.1017581, 0.12629594, 0.19936833, -0.044576302, -0.03986123, -0.045146126), target);
	target = MulAdd(nb1, MF4x4(0.04021637, -0.23936734, 0.089715995, -0.09695566, 0.05547677, 0.18304437, -0.07833711, 0.112606, 0.0744301, -0.121345356, -0.027121276, -0.039470885, -0.17090486, -0.08291478, -0.06501107, 0.06060779), target);
	target = MulAdd(nc1, MF4x4(0.06427166, 0.17954405, -0.24260868, 0.18583788, -0.03080801, 0.011544634, 0.021221055, -0.019622765, -0.022112694, 0.0568264, 0.117274575, 0.041028306, 0.093058385, -0.023635406, -0.04134845, 0.00012594834), target);
	target = MulAdd(nd1, MF4x4(0.01102109, -0.07289346, 0.0040596994, -0.07953831, -0.1976572, -0.11829853, 0.11517921, -0.051805526, 0.0055726753, 0.06592285, -0.16681968, -0.08300715, -0.28577968, -0.08173121, -0.13457035, 0.1885804), target);
	target = MulAdd(ne1, MF4x4(-0.043770324, 0.048198868, -0.18608971, 0.17838612, -0.046778083, 0.19665273, -0.16118616, -0.057293214, -0.10633619, -0.09953019, 0.1862994, 0.18493782, 0.25938433, -0.149985, 0.04676386, -0.014036956), target);
	target = MulAdd(nf1, MF4x4(-0.0003725085, 0.1989401, 0.16909252, 0.22780822, -0.015987061, -0.054565016, -0.05243573, -0.09775517, -0.120326936, 0.032995265, -0.0036331255, 0.13726561, 0.010277991, 0.06425755, -0.19020142, 0.23083436), target);
	target = MulAdd(ng1, MF4x4(0.010936359, -0.02849875, 0.026482444, 0.047691442, -0.19206773, -0.044349756, -0.054649103, -0.07385235, 0.05956405, -0.053711556, -0.07337501, -0.119425744, 0.076072186, -0.049311332, 0.03184111, -0.17484605), target);
	target = MulAdd(nh1, MF4x4(-0.04350626, 0.1328187, -0.003457409, 0.19061741, 0.09211707, 0.035870664, -0.09363488, -0.01568525, 0.05562321, 0.14633514, -0.04855048, -0.24370678, 0.0069594583, 0.14880905, 0.06160373, 0.1566208), target);
	target = MulAdd(ni1, MF4x4(0.08560771, -0.031726982, 0.005994847, -0.115577385, -0.045169592, 0.034692086, 0.0039135055, -0.008828711, 0.08696738, 0.08552442, 0.21965103, 0.0065012877, -0.017958874, 0.15068494, 0.07910082, 0.09843224), target);
	target = MulAdd(na2, MF4x4(0.2618397, -0.113963105, 0.06466962, -0.09055511, 0.007243974, -0.37684396, -0.18955688, 0.100891486, 0.062019303, -0.06868768, 0.0066693923, 0.09453199, -0.11875178, -0.09406968, -0.009971733, -0.057884283), target);
	target = MulAdd(nb2, MF4x4(0.016240982, 0.045132026, 0.2496788, 0.0119000245, 0.019433737, -0.11958368, 0.07371615, -0.022081666, 0.23179133, 0.10534677, -0.13151011, 0.139116, -0.17987, -0.11249553, 0.097996086, 0.054070864), target);
	target = MulAdd(nc2, MF4x4(-0.057584394, 0.11625342, -0.06034331, 0.063899584, 0.0044478853, 0.048200164, 0.055355098, 0.10972887, 0.16012698, -0.006732891, 0.015804278, -0.14185822, -0.19013652, -0.062766224, 0.045399975, 0.14899541), target);
	target = MulAdd(nd2, MF4x4(-0.077381015, 0.11935363, 0.12262458, 0.018346768, -0.2634294, -0.2107294, -0.048516907, -0.09564381, -0.10719365, -0.115967, -0.13483748, -0.036267295, -0.012578293, 0.069732994, 0.017012898, 0.097437724), target);
	target = MulAdd(ne2, MF4x4(0.081788, -0.11083114, 0.4005737, -0.055207055, 0.1418393, -0.06587734, 0.088737585, 0.08120421, -0.16296746, 0.17222044, 0.046313863, 0.10915246, 0.05388926, -0.19152795, 0.03076327, -0.14683272), target);
	target = MulAdd(nf2, MF4x4(0.11940256, -0.033606835, -0.11385313, -0.012965868, 0.0049813213, 0.20263551, 0.029295778, 0.002276154, -0.1504537, 0.0381973, 0.3823588, -0.1798354, 0.17070186, 0.02357347, -0.2709012, 0.105102755), target);
	target = MulAdd(ng2, MF4x4(0.041491576, 0.07074733, 0.029625034, 0.102119364, 0.023521155, -0.05969154, -0.00814052, 0.032964356, 0.055066362, -0.07298709, -0.121119626, 0.016125243, 0.2734818, -0.028699303, 0.09567124, -0.1437524), target);
	target = MulAdd(nh2, MF4x4(-0.09484942, -0.15358907, 0.09471094, -0.114015654, -0.051614996, 0.19810407, -0.011734439, -0.057111017, -0.17113343, 0.06991598, -0.16437295, 0.2067726, 0.23162523, -0.036471117, 0.22033283, -0.29183832), target);
	target = MulAdd(ni2, MF4x4(0.009506645, -0.041623287, -0.03679158, -0.010971644, 0.08336135, 0.11131871, 0.1109166, -0.08703141, 0.056035098, 0.124049544, 0.2795689, -0.019536458, 0.03888329, -0.0442052, -0.23853621, 0.13220637), target);
	target = MulAdd(na3, MF4x4(-0.14223816, -0.05481326, -0.106896244, 0.07581965, 0.26316708, 0.15500818, 0.14914538, -0.087868035, 0.15062201, -0.12426363, -0.04299309, 0.040522538, 0.04150885, 0.073053494, -0.041965067, 0.04128295), target);
	target = MulAdd(nb3, MF4x4(0.051048342, -0.21921599, 0.058443762, -0.055652432, -0.24098797, 0.092578836, -0.17062624, 0.09491869, 0.13260794, -0.024925478, 0.056296505, 0.019934958, 0.003565539, 0.09137244, -0.061169084, 0.04022485), target);
	target = MulAdd(nc3, MF4x4(0.115069486, 0.16206908, 0.004882299, 0.12614444, -0.03246297, -0.039095636, 0.09410652, -0.039889894, -0.08477494, 0.013032491, -0.055409547, -0.0090540685, -0.035735607, 0.057657916, 0.05354303, 0.0075290967), target);
	target = MulAdd(nd3, MF4x4(0.004056719, -0.15240185, 0.09084391, 0.037376285, -0.044079285, 0.31589335, 0.026515607, 0.14028117, -0.19225578, -0.002587953, 0.0090361675, 0.14138633, -0.38758466, 0.102398396, -0.07574637, 0.11732128), target);
	target = MulAdd(ne3, MF4x4(-0.030521149, 0.09753763, 0.052158583, 0.048188724, 0.011470252, -0.110833496, 0.32450467, 0.04464802, -0.0646964, 0.045225292, -0.25168836, 0.20104809, -0.15454476, -0.083546594, 0.21034841, -0.0058077993), target);
	target = MulAdd(nf3, MF4x4(-0.07213084, -0.17950292, -0.051891763, -0.067120604, -0.02192382, -0.11469988, -0.1409072, 0.006448966, -0.00049237284, 0.13916697, 0.0894537, 0.16725081, 0.18191423, -0.06112781, 0.19929808, -0.10002286), target);
	target = MulAdd(ng3, MF4x4(-0.02475302, -0.010589183, -0.015627548, -0.16213211, 0.123653755, 0.0245485, 0.0997649, -0.09865162, -0.07168899, 0.15398216, -0.07207907, -0.07172799, 0.028756795, 0.07118634, -0.0511127, -0.0056653675), target);
	target = MulAdd(nh3, MF4x4(0.21074565, 0.086340725, -0.06073654, -0.04343985, -0.02840264, -0.053368784, 0.037268292, -0.008291989, -0.045832828, 0.023931399, 0.1709933, -0.13587636, 0.051735718, -0.06827666, -0.051731657, 0.17399976), target);
	target = MulAdd(ni3, MF4x4(-0.13356943, 0.086585164, 0.13944262, -0.026031096, -0.16735698, -0.08396402, -0.12688719, 0.12656367, 0.14114396, 0.018382069, 0.05972302, -0.08622411, -0.062958784, -0.056109, 0.045292944, -0.008465162), target);
	conv2d_1_tf2[gxy] = target;
}

//!PASS 3
//!DESC Conv-4x3x3x24
//!IN conv2d_1_tf, conv2d_1_tf1, conv2d_1_tf2
//!OUT conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2
//!BLOCK_SIZE 8
//!NUM_THREADS 64

void Pass3(uint2 blockStart, uint3 threadId) {
	uint2 gxy = Rmp8x8(threadId.x) + blockStart;
	uint2 inputSize = GetInputSize();
	if (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {
		return;
	}

	float2 inputPt = GetInputPt();
	float2 pos = (gxy + 0.5f) * inputPt;

	// [ a, d, g ]
	// [ b, e, h ]
	// [ c, f, i ]
	MF4 a1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e1 = conv2d_1_tf.SampleLevel(sam, pos, 0);
	MF4 f1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na1 = max(-a1, 0);
	MF4 nb1 = max(-b1, 0);
	MF4 nc1 = max(-c1, 0);
	MF4 nd1 = max(-d1, 0);
	MF4 ne1 = max(-e1, 0);
	MF4 nf1 = max(-f1, 0);
	MF4 ng1 = max(-g1, 0);
	MF4 nh1 = max(-h1, 0);
	MF4 ni1 = max(-i1, 0);

	a1 = max(a1, 0);
	b1 = max(b1, 0);
	c1 = max(c1, 0);
	d1 = max(d1, 0);
	e1 = max(e1, 0);
	f1 = max(f1, 0);
	g1 = max(g1, 0);
	h1 = max(h1, 0);
	i1 = max(i1, 0);

	MF4 a2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e2 = conv2d_1_tf1.SampleLevel(sam, pos, 0);
	MF4 f2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na2 = max(-a2, 0);
	MF4 nb2 = max(-b2, 0);
	MF4 nc2 = max(-c2, 0);
	MF4 nd2 = max(-d2, 0);
	MF4 ne2 = max(-e2, 0);
	MF4 nf2 = max(-f2, 0);
	MF4 ng2 = max(-g2, 0);
	MF4 nh2 = max(-h2, 0);
	MF4 ni2 = max(-i2, 0);

	a2 = max(a2, 0);
	b2 = max(b2, 0);
	c2 = max(c2, 0);
	d2 = max(d2, 0);
	e2 = max(e2, 0);
	f2 = max(f2, 0);
	g2 = max(g2, 0);
	h2 = max(h2, 0);
	i2 = max(i2, 0);

	MF4 a3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e3 = conv2d_1_tf2.SampleLevel(sam, pos, 0);
	MF4 f3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na3 = max(-a3, 0);
	MF4 nb3 = max(-b3, 0);
	MF4 nc3 = max(-c3, 0);
	MF4 nd3 = max(-d3, 0);
	MF4 ne3 = max(-e3, 0);
	MF4 nf3 = max(-f3, 0);
	MF4 ng3 = max(-g3, 0);
	MF4 nh3 = max(-h3, 0);
	MF4 ni3 = max(-i3, 0);

	a3 = max(a3, 0);
	b3 = max(b3, 0);
	c3 = max(c3, 0);
	d3 = max(d3, 0);
	e3 = max(e3, 0);
	f3 = max(f3, 0);
	g3 = max(g3, 0);
	h3 = max(h3, 0);
	i3 = max(i3, 0);

	MF4 target = MF4(-0.0010391332, 0.00068204466, -0.030266605, 0.058793433);
	target = MulAdd(a1, MF4x4(-0.037910778, -0.035500437, -0.021893462, 0.054371376, 0.09471609, -0.013197591, 0.07086438, -0.11686955, 0.022289908, 0.0025881499, 0.08467518, -0.057070434, 0.03195129, 0.06176325, 0.27392688, 0.10100888), target);
	target = MulAdd(b1, MF4x4(-0.004817188, -0.11114106, -0.03836096, -0.16221185, 0.08728879, -0.05551734, 0.09426232, -0.08904898, -0.075777575, 0.0001265835, 0.25881302, 0.22047207, 0.026294703, -0.07252985, -0.056022674, 0.25379947), target);
	target = MulAdd(c1, MF4x4(-0.0013540969, 0.013188547, 0.060211327, 0.041778293, 0.0012638031, 0.022573406, 0.015312594, -0.08047488, -0.029625304, -0.10852883, 0.108838476, 0.13623391, -0.0051957406, -0.034240637, -0.032037422, 0.0045633493), target);
	target = MulAdd(d1, MF4x4(0.041612104, 0.027505638, 0.025826843, 0.04501326, -0.062472913, 0.1431332, -0.012212282, -0.07516733, -0.08864002, -0.07006836, 0.046692412, -0.124091975, 0.06427506, -0.051631026, 0.12263653, 0.27044338), target);
	target = MulAdd(e1, MF4x4(0.034103375, 0.08673059, 0.0459527, -0.23862843, -0.055772513, -0.41714105, -0.08171965, -0.14642227, 0.04656934, -0.18259554, -0.13177022, -0.28559983, 0.0552958, -0.016403524, -0.5513842, 0.0053697815), target);
	target = MulAdd(f1, MF4x4(-0.11872737, -0.028105678, 0.049640797, -0.037546065, -0.010099046, 0.008806696, 0.006435101, -0.10383732, -0.0073283147, 0.08962551, -0.07394422, 0.108856045, -0.014820589, 0.023872554, -0.08112636, 0.10347607), target);
	target = MulAdd(g1, MF4x4(0.0022989328, 0.046885073, 0.011864779, 0.10420016, -0.0077429335, 0.048106942, 0.032495916, -0.062273387, -0.016874082, -0.06954098, -0.10819509, -0.056219935, -0.020670906, 0.0021182857, -0.009832249, 0.18701169), target);
	target = MulAdd(h1, MF4x4(0.105950266, 0.040404048, 0.19594736, 0.06012987, -0.3698849, 0.10401502, 0.12703699, -0.23428011, 0.083823904, -0.03521832, -0.006525461, 0.009951793, -0.074361816, -0.035402164, -0.3206954, 0.110812664), target);
	target = MulAdd(i1, MF4x4(-0.12013042, -0.06367559, 0.021684205, 0.0130499415, 0.009942601, 0.047442563, 0.08855212, -0.10024017, 0.056777865, 0.0051039625, 0.048569407, -0.04560259, 0.19188851, -0.039756753, 0.042021576, -0.09870584), target);
	target = MulAdd(a2, MF4x4(-0.03247849, -0.02753363, 0.071279705, 0.09104136, -0.0641851, -0.01594897, 0.232652, 0.003967937, 0.0111541925, 0.07306814, -0.0010335519, -0.04429391, 0.031370234, -0.026928704, -0.07516576, -0.055082712), target);
	target = MulAdd(b2, MF4x4(-0.006180861, -0.10843575, -0.10045209, 0.067148104, 0.057421815, -0.068374164, -0.025756257, 0.1257984, 0.013264953, -0.0018182937, 0.05816216, -0.053461242, -0.085824065, -0.090526566, 0.09129818, 0.01570347), target);
	target = MulAdd(c2, MF4x4(-0.0017998819, 0.022640059, 0.023404252, 0.03338553, 0.044353716, -0.014139882, -0.07758573, 0.021012677, 0.005980595, 0.04550881, 0.029285448, 0.091678455, 0.053803694, 0.05237155, -0.10997527, -0.10318552), target);
	target = MulAdd(d2, MF4x4(-0.061029036, 0.0993827, 0.06381772, -0.089550115, 0.03308348, -0.03782301, 0.24164158, 0.31569025, 0.113647655, 0.15545848, 0.11519764, 0.0094105825, -0.11816621, 0.0978243, 0.10073588, -0.1117752), target);
	target = MulAdd(e2, MF4x4(0.3734672, -0.11816779, -0.23627514, -0.14588231, -0.12371406, 0.2616982, -0.29942805, -0.31744456, 0.12686929, -0.10511419, -0.33209988, 0.0784947, -0.09980473, -0.08277972, -0.119013116, -0.1052021), target);
	target = MulAdd(f2, MF4x4(0.11694942, -0.009177821, 0.16751128, -0.058083236, -0.029300451, 0.0151769, -0.10590713, 0.006317685, -0.07721141, -0.037264653, -0.09573406, 0.082819514, -0.15364629, 0.07974328, 0.05129384, 0.021289254), target);
	target = MulAdd(g2, MF4x4(0.026528852, -0.018197816, 0.06862055, -0.025078347, 0.06341248, -0.022047924, 0.16852759, 0.20795865, -0.12899017, 0.11940279, 0.049954895, -0.106641375, 0.003286302, 0.04101139, -0.014838044, -0.038886186), target);
	target = MulAdd(h2, MF4x4(-0.043906186, -0.09395722, 0.15171658, -0.060511537, -0.012321243, -0.23226517, -0.06977063, 0.021510785, -0.5478768, 0.17448187, -0.05923425, -0.028172622, -0.051738627, 0.06815423, 0.029064734, 0.044883635), target);
	target = MulAdd(i2, MF4x4(0.17660363, -0.09060859, 0.05569762, -0.034592126, -0.068783976, -0.039074708, -0.04003811, -0.08994642, 0.00041321313, -0.032173786, 0.004815178, -0.044516895, 0.1984147, -0.056799933, 0.051942617, 0.0849639), target);
	target = MulAdd(a3, MF4x4(-0.029470835, 0.0010429046, 0.09949836, -0.057022177, -0.001196081, -0.017638477, 0.054664012, 0.06374254, 0.005238237, -0.17255385, -0.042707976, -0.0863512, 0.00061518815, 0.054800972, -0.05120795, -0.047205627), target);
	target = MulAdd(b3, MF4x4(0.04392789, 0.046026394, 0.11252635, -0.124906264, -0.08496978, -0.03472233, -0.05066398, 0.08292728, 0.0370577, -0.15259257, 0.0023178253, -0.017130997, 0.052111663, 0.059383318, -0.0734842, -0.052565083), target);
	target = MulAdd(c3, MF4x4(-0.0148467785, 0.025143752, 0.17002934, -0.019566009, -0.12469424, 0.111287884, 0.030433882, 0.045797966, 0.0013495206, -0.04792389, 0.01556216, 0.047324177, 0.05905737, -0.053480197, 0.033480287, -0.060852114), target);
	target = MulAdd(d3, MF4x4(-0.09745605, 0.009108342, 0.058276523, -0.09670028, 0.008513788, 0.0774033, 0.038419556, -0.012280158, -0.027220225, -0.19755986, -0.10123508, -0.24532557, 0.002611559, 0.058633193, 0.08722474, 0.019499615), target);
	target = MulAdd(e3, MF4x4(-0.097140476, 0.36332083, -0.12693818, -0.26086056, 0.18138097, -0.063169576, 0.09627784, -0.29556775, -0.010828089, 0.016550604, 0.19736116, -0.14276053, 0.2359206, -0.308187, 0.17120488, 0.17035627), target);
	target = MulAdd(f3, MF4x4(0.06563522, -0.00202452, 0.08656298, -0.068018384, 0.01052145, 0.12411763, -0.027613457, 0.046576608, -0.028641906, 0.030090526, 0.014531246, 0.028142689, -0.019974183, -0.015619782, 0.0913814, -0.07086511), target);
	target = MulAdd(g3, MF4x4(-0.021320846, 0.0272274, -0.079895236, 0.00012995047, -0.0070819, -0.028833998, -0.022662425, -0.07660687, 0.046270683, -0.11193344, 0.09937696, -0.006931022, -0.03781205, 0.011890765, 0.07618696, -0.004474331), target);
	target = MulAdd(h3, MF4x4(0.2012585, 0.05607582, -0.13407731, -0.0008222547, -0.10648238, 0.13230269, -0.0038185061, -0.058967687, 0.21021713, -0.12308194, 0.18324743, -0.045672223, -0.07443494, 0.061296284, -0.10310777, -0.03480636), target);
	target = MulAdd(i3, MF4x4(-0.042971224, 0.03137188, -0.029815951, -0.035710253, -0.17403825, 0.040264893, -0.18175416, 0.13371879, 0.004413511, -0.0062794136, -0.020018531, -0.009863606, -0.08686421, -0.0011867149, -0.13477059, 0.09668236), target);
	target = MulAdd(na1, MF4x4(-0.08406905, 0.017502543, -0.13238557, -0.06540308, -0.030992452, -0.027247543, 0.1152638, -0.027957149, -0.020494465, -0.016736055, 0.011691886, -0.07697167, -0.031962387, 0.03275166, 0.009455422, 0.00013493745), target);
	target = MulAdd(nb1, MF4x4(-0.003264767, -0.006133971, -0.14870334, -0.22470197, -0.12281174, 0.0477529, -0.039383784, -0.16171986, 0.049935117, 0.040750828, -0.11027704, -0.18039477, -0.042500887, 0.021469388, 0.19601227, 0.061283164), target);
	target = MulAdd(nc1, MF4x4(-0.14063793, 0.12379436, -0.091903225, -0.19485305, 0.030889416, 0.023173934, 0.06269456, -0.017552888, 0.042706978, 0.008942839, 0.007431359, -0.08055777, -0.024079857, -0.050207764, 0.03883315, 0.054677337), target);
	target = MulAdd(nd1, MF4x4(0.043164276, -0.06845965, -0.022847408, 0.026803896, 0.077586755, -0.18144956, 0.24237816, -0.062269997, 0.03350464, 0.022612114, -0.20257936, -0.049737748, 0.0026508393, -0.04457029, 0.08698817, -0.0057848943), target);
	target = MulAdd(ne1, MF4x4(0.19637893, -0.041842524, 0.08093373, 0.061292946, 0.025697658, 0.43139693, 0.12997067, -0.14218695, 0.06652134, 0.16816506, 0.1798584, 0.19504555, -0.18834472, 0.11258412, 0.07003108, -0.0691332), target);
	target = MulAdd(nf1, MF4x4(0.0864983, -0.0044556237, 0.1519761, -0.13158719, 0.01852619, -0.045526046, 0.09956223, -0.11713047, -0.024078155, -0.060722336, -0.057925105, 0.073217146, 0.06373482, -0.024553156, -0.14688796, -0.13317719), target);
	target = MulAdd(ng1, MF4x4(0.035958245, -0.04845082, 0.087631844, 0.040034134, -0.026027406, -0.036821436, 0.06533815, -0.080381244, 0.07234854, -0.001883384, -0.07122587, 0.08832016, 0.036729597, 0.021539502, 0.027530821, -0.010070853), target);
	target = MulAdd(nh1, MF4x4(0.08983327, 0.01506289, 0.028762873, 0.13285533, 0.2895279, -0.06620886, -0.12341643, 0.005919442, -0.06404377, -0.030869035, -0.040210303, -0.13364644, 0.03067747, -0.0035035561, -0.0012897043, -0.120404474), target);
	target = MulAdd(ni1, MF4x4(0.12848322, -0.016383486, -0.09702801, 0.056479152, 0.066560045, -0.048578385, -0.031433776, -0.024350693, -0.03682033, -0.07085884, -0.03814125, -0.0005977634, -0.119241685, 0.027776804, 0.07646508, -0.079195194), target);
	target = MulAdd(na2, MF4x4(0.024724264, 0.0015230086, -0.05821472, 0.10433403, 0.078276865, 0.0020044958, -0.07082553, 0.21335958, -0.0192252, -0.046226356, -0.02576458, -0.005851255, 0.0061004073, -0.011763933, 0.052182812, -0.0148038035), target);
	target = MulAdd(nb2, MF4x4(-0.090289906, 0.07818745, 0.005133399, 0.2921895, -0.028104218, 0.010640733, -0.16721979, 0.11722157, 0.026559753, 0.06893593, -0.05803866, 0.10257745, 0.16412877, 0.08355433, -0.16449857, -0.19565444), target);
	target = MulAdd(nc2, MF4x4(-0.01625647, 0.014653339, -0.19772816, 0.035248496, -0.06315719, 0.053839743, -0.19860831, 0.060684476, 0.036236748, -0.06486933, -0.00240829, 0.049791906, 0.012847281, -0.12640457, 0.03785943, -0.066897415), target);
	target = MulAdd(nd2, MF4x4(-0.04193157, -0.043217663, 0.028713515, 0.034761403, -0.08618379, 0.07707441, 0.051029418, 0.042290796, -0.020135805, -0.1441393, -0.17698085, 0.011781508, -0.047712356, -0.09853696, 0.044760805, 0.07639903), target);
	target = MulAdd(ne2, MF4x4(-0.04970899, -0.06206872, 0.32036147, 0.38422447, 0.02741357, -0.14773113, 0.026606748, 0.42104495, -0.16836561, 0.2612918, 0.32872567, 0.23574458, -0.48027223, 0.19769326, 0.40519443, 0.28430668), target);
	target = MulAdd(nf2, MF4x4(-0.119522125, 0.045909975, -0.32532844, 0.16027172, 0.05406689, -0.0002717805, -0.10895223, -0.06700742, 0.11265451, -0.009777009, -0.054376923, 0.15653811, 0.07952248, -0.07323665, -0.030681474, -0.14271308), target);
	target = MulAdd(ng2, MF4x4(0.021888081, -0.015081948, -0.08500391, -0.0566363, -0.02412306, 0.024970217, -0.08783075, -0.144119, 0.15955818, -0.09113594, -0.09460523, -0.013640705, 0.048579562, -0.051078796, 0.12259883, -0.12369713), target);
	target = MulAdd(nh2, MF4x4(0.061307143, 0.12150064, -0.16097173, 0.054234862, 0.038454264, 0.19086266, -0.20866115, 0.17528693, 0.23780084, -0.085481875, -0.09336333, -0.03828183, 0.08448641, -0.01021121, 0.108555876, 0.10073375), target);
	target = MulAdd(ni2, MF4x4(-0.07457479, 0.03767845, -0.04527163, 0.10312832, 0.018638285, 0.012303309, 0.068570994, 0.10636223, -0.046746258, -0.019519145, -0.09643553, 0.08668433, -0.08180716, -0.020997278, -0.19613801, 0.01197474), target);
	target = MulAdd(na3, MF4x4(0.038627718, -0.037348352, -0.0016635836, -0.029068137, -0.0026173298, 0.04695015, 0.011762658, 0.06046751, 0.03098801, 0.111461185, 0.196085, 0.087878406, 0.075701654, -0.09116793, -0.017858198, 0.019194437), target);
	target = MulAdd(nb3, MF4x4(-0.033022836, 0.00017579814, -0.04213397, -0.003223962, 0.109210424, 0.047623046, 0.036035728, 0.017458893, -0.01845847, 0.024312373, 0.15710357, 0.05525064, -0.011054537, 0.02045055, -0.059532605, -0.007326871), target);
	target = MulAdd(nc3, MF4x4(-0.027690193, 0.06131419, -0.17661297, -0.13770969, 0.10287112, -0.07097745, 0.004205589, 0.028562127, -0.047289394, -0.04858619, -0.029686142, 0.025106741, 0.0023360238, 0.09964466, -0.061582137, 0.03198441), target);
	target = MulAdd(nd3, MF4x4(0.10689288, 0.008829629, 0.016441079, 0.036601987, -0.054011513, -0.009619861, -0.087633766, -0.0066380203, -0.12721415, 0.0904403, 0.33278695, -0.07447129, -0.03637649, 0.0784043, -0.20029514, 0.04795142), target);
	target = MulAdd(ne3, MF4x4(0.073388234, -0.18476517, 0.06697527, 0.15738879, -0.11097766, 0.0031603684, -0.46672878, 0.055933684, -0.13741222, 0.10608221, -0.09634478, 0.12178066, 0.20948799, 0.32808498, -0.30967075, 0.002408044), target);
	target = MulAdd(nf3, MF4x4(-0.1276311, 0.2165364, -0.20479621, -0.04220272, -0.11207731, -0.07808082, 0.024846211, 0.1822824, 0.055696778, 0.04820076, -0.09683677, 0.10400354, -0.017928122, 0.13301387, 0.18256992, -0.12553082), target);
	target = MulAdd(ng3, MF4x4(0.043751966, -0.021505235, 0.07481632, 0.07004997, 0.09292071, -0.06297265, 0.010273411, 0.14864413, -0.06774047, -0.046168163, -0.007962312, -0.25100794, -0.037582185, 0.05529135, -0.028888226, -0.08730092), target);
	target = MulAdd(nh3, MF4x4(-0.27975065, 0.06358462, 0.037314422, 0.008414804, 0.09947835, -0.05693826, 0.035390552, 0.16577837, -0.117649436, -0.035677984, -0.23139963, -0.11336497, -0.26102057, 0.16566856, 0.19760732, -0.1030265), target);
	target = MulAdd(ni3, MF4x4(0.06606493, -0.004958344, 0.012705852, 0.003391442, 0.15169266, -0.087174624, 0.17418364, 0.114550345, 0.017576916, -0.076570995, 0.014861571, -0.056111492, 0.08879636, 0.05000804, 0.08393709, -0.05148531), target);
	conv2d_2_tf[gxy] = target;
	
	target = MF4(-0.031869058, -0.049291052, -0.05604242, 0.01975563);
	target = MulAdd(a1, MF4x4(0.07575434, -0.040653445, 0.007225497, -0.043918904, 0.119574465, 0.011380923, 0.16722572, -0.013146596, 0.024970967, -0.028010864, 0.007539211, 0.009367542, 0.0053172954, 0.003149008, -0.06781401, 0.022353206), target);
	target = MulAdd(b1, MF4x4(-0.24854389, -0.013649374, -0.17061508, 0.04292164, -0.005861008, 0.03951371, -0.0047152913, 0.015763909, 0.076025434, 0.0020614571, 0.035092413, -0.15013616, 0.07448282, -0.06402445, 0.2066371, -0.15285529), target);
	target = MulAdd(c1, MF4x4(0.020919988, -0.023931077, -0.0026673493, 0.08726077, 0.08519901, 0.038367324, 0.012967744, -0.014597907, 0.03273228, 0.03425027, 0.11657879, -0.10561241, -0.10698567, 0.08750399, -0.029988581, 0.055827994), target);
	target = MulAdd(d1, MF4x4(-0.05367477, -0.078411445, 0.107682705, -0.05179454, -0.101149, -0.016185397, 0.2755446, -0.2408976, 0.015464319, 0.042289484, 0.1908763, -0.15750426, -0.06516995, 0.072354965, 0.06715771, 0.26282984), target);
	target = MulAdd(e1, MF4x4(0.062333807, 0.06013844, -0.040104974, -0.33716065, 0.06652305, 0.3144661, -0.08150677, 0.17847258, 0.025293501, 0.085246235, 0.1500923, -0.028793348, -0.008922378, -0.023754073, -0.15999489, -0.10776248), target);
	target = MulAdd(f1, MF4x4(0.013679765, -0.0068315254, -0.0063317283, 0.04092541, -0.024292475, -0.08490433, 0.052840695, -0.056294404, 0.1751175, -0.03373209, 0.031306665, -0.14522974, -0.1688535, 0.09737534, -0.06616412, 0.2202574), target);
	target = MulAdd(g1, MF4x4(0.019336289, 0.054557003, -0.08372398, 0.013064762, 0.014936632, 0.031539556, 0.046100393, -0.14767817, -0.03333652, 0.020777406, 0.070448704, -0.009688919, -0.090416685, -0.025141802, 0.030440604, -0.11709335), target);
	target = MulAdd(h1, MF4x4(-0.019530639, -0.017071763, 0.16344751, -0.09003354, 0.049499974, 0.066197686, 0.17537111, -0.10965739, 0.027256027, -0.04720143, 0.03044248, -0.10484599, -0.051237702, 0.038487937, -0.072922744, 0.023582684), target);
	target = MulAdd(i1, MF4x4(0.06786746, 0.08613347, 0.058307048, -0.02357511, 0.14101249, 0.05510837, 0.082233034, -0.011995293, 0.022474831, 0.010892606, -0.01492494, -0.11511058, 0.055903982, 0.02207162, -0.098973624, 0.040012434), target);
	target = MulAdd(a2, MF4x4(-0.064766414, -0.051125515, 0.03402284, 0.057396293, -0.117072344, -0.019163232, 0.037863698, -0.052369513, -0.0061165625, 0.061819155, 0.028041245, -0.09490486, 0.1093347, -0.00664147, -0.08768312, 0.0070511065), target);
	target = MulAdd(b2, MF4x4(-0.29905078, -0.09995567, -0.08120736, -0.03129106, -0.098326, 0.011130474, 0.036129285, 0.17871866, -0.084457494, -0.012659195, -0.02691152, 0.14104512, -0.21426772, -0.07243515, 0.11658849, -0.002852482), target);
	target = MulAdd(c2, MF4x4(-0.17713405, 0.06941797, -0.062077515, -0.030658305, 0.08999236, -0.06921259, -0.095924884, 0.07375469, 0.11921843, 0.03554809, 0.058501836, 0.061609276, 0.21009676, 0.0685857, 0.04634768, -0.011610212), target);
	target = MulAdd(d2, MF4x4(0.23054165, -0.039558277, -0.08045203, 0.06898775, -0.029158285, -0.037750367, -0.24264999, 0.05567059, 0.033564106, 0.03715445, 0.21824217, -0.043530416, 0.14731471, -0.07235384, 0.089611664, 0.026031008), target);
	target = MulAdd(e2, MF4x4(-0.098505996, 0.076161414, -0.09749997, 0.08872072, -0.12537481, 0.004141966, -0.067040585, -0.39046898, 0.055973317, 0.042723298, -0.13534929, -0.04335705, -0.09676344, -0.030532371, -0.07493259, -0.204519), target);
	target = MulAdd(f2, MF4x4(0.092057995, 0.56036115, 0.035873197, 0.057625197, -0.027210712, 0.06758173, 0.03869267, 0.058112122, -0.17431425, 0.06694562, -0.023299959, -0.036024995, -0.08311603, -0.13028675, 0.030961594, -0.09352405), target);
	target = MulAdd(g2, MF4x4(-0.04974338, -0.018803855, 0.10142671, -0.011776798, 0.06506589, -0.028476488, -0.019591449, -0.009582206, -0.039581254, 0.08912891, 0.15407297, -0.1111981, 0.018480325, -0.020779947, 0.031039927, -0.028463457), target);
	target = MulAdd(h2, MF4x4(0.03755804, -0.03275704, 0.05746246, -0.20568763, -0.043458223, 0.101914786, 0.09678074, 0.020130953, 0.14230555, -0.059717167, 0.16945612, -0.037695907, 0.005530407, 0.03836577, -0.13570379, 0.07553547), target);
	target = MulAdd(i2, MF4x4(0.1345541, -0.060120266, 0.053173084, -0.049932115, -0.064288326, -0.04958125, -0.0018103139, -0.006733389, 0.09001299, -0.04224858, -0.029498586, 0.18575308, -0.04561738, -0.07796082, -0.053623714, 0.10945586), target);
	target = MulAdd(a3, MF4x4(0.038186714, -0.012922114, -0.019606752, 0.10890265, -0.026697423, -0.031865556, -0.15932839, -0.026640827, -0.04705261, 0.037437834, 0.10179085, -0.0104858745, 0.07226553, 0.086646274, 0.101131245, -0.013259711), target);
	target = MulAdd(b3, MF4x4(-0.023795605, -0.03550652, -0.107414104, 0.24193193, -0.14496972, -0.0053217285, 0.07148466, 0.12643136, -0.028414654, -0.022065196, 0.22527543, 0.03852106, -0.06697379, 0.022275146, -0.04764777, 0.120496206), target);
	target = MulAdd(c3, MF4x4(0.23702599, 0.0025132557, -0.09258897, 0.19450943, 0.16891776, -0.13970126, -0.011847789, -0.11160886, -0.027799755, 0.044170912, -0.01895572, -0.031032356, 0.050352756, 0.021191083, 0.020041477, 0.043741606), target);
	target = MulAdd(d3, MF4x4(-0.009787904, -0.0031327195, 0.13239524, -0.02248145, 0.017299512, -0.081802346, -0.026019929, 0.18054922, -0.14968066, 0.008379352, -0.13506816, -0.39034408, -0.01510947, 0.050189696, 0.037722163, -0.0402762), target);
	target = MulAdd(e3, MF4x4(-0.009644101, -0.07043924, -0.21935566, -0.12265316, -0.10996126, 0.106311634, -0.23956922, -0.015151155, 0.305456, -0.012311232, 0.3604329, 0.042090364, -0.07823785, 0.0045187594, -0.14659731, -0.13044918), target);
	target = MulAdd(f3, MF4x4(0.056163978, 0.08190758, -0.21001509, -0.033524346, 0.06273405, -0.2997634, 0.17979006, 0.056670144, 0.17271192, 0.18963227, 0.014150318, 0.06472095, 0.011062292, -0.18754636, -0.11784225, -0.03410013), target);
	target = MulAdd(g3, MF4x4(-0.0030782006, -0.039169632, -0.012148773, 0.007969146, 0.08711546, -0.037726182, 0.083651684, -0.08435948, -0.019397778, -0.0052067027, 0.08074589, -0.30207992, 0.047031336, 0.002789317, 0.15840194, -0.015054001), target);
	target = MulAdd(h3, MF4x4(-0.09078356, 0.12796444, -0.18432406, 0.16723672, -0.05772405, -0.030571923, 0.116594106, 0.06573904, 0.09887476, 0.09740928, 0.106751874, -0.00070329773, 0.010173095, -0.01197216, -0.06333568, 0.09718661), target);
	target = MulAdd(i3, MF4x4(-0.110290706, -0.005412752, 0.003918915, 0.0149365235, -0.12237922, -0.0941654, -0.034798037, 0.015760876, 0.04696292, -0.029291628, 0.045765277, -0.015127902, -0.09263057, 0.05402446, -0.0015908936, -0.033567302), target);
	target = MulAdd(na1, MF4x4(-0.1546162, -0.046554644, -0.0391521, -0.09454174, -0.0145587865, 0.07268975, -0.02036403, 0.015187209, 0.026502129, 0.032875117, 0.12548845, -0.19535835, 0.010370751, 0.030553613, -0.042921092, 0.11908), target);
	target = MulAdd(nb1, MF4x4(0.008709621, 0.12762955, 0.02271395, -0.031447556, 0.2041771, -0.029859964, -0.015839372, 0.10484876, 0.09285942, -0.020085273, 0.2329937, -0.29332286, 0.08294215, 0.011051319, -0.04993451, 0.042096935), target);
	target = MulAdd(nc1, MF4x4(0.18800123, -0.03135053, 0.039468758, -0.1393591, -0.055419687, -0.06350931, 0.017772222, 0.05357081, 0.10056033, 0.017571677, 0.05918185, -0.18371263, 0.0045149303, -0.077885784, -0.00043915678, -0.008647403), target);
	target = MulAdd(nd1, MF4x4(-0.011838485, 0.07350019, 0.0420831, 0.16229297, 0.009401042, 0.063198246, 0.060701136, -0.24234499, -0.098218255, 0.0034951624, -0.010836201, -0.07096872, -0.066027485, -0.008603827, -0.0023365172, 0.036595766), target);
	target = MulAdd(ne1, MF4x4(-0.007935683, -0.26162764, 0.04059723, -0.059729014, 0.13929102, -0.09995081, 0.26922408, -0.29116368, -0.091238625, -0.07413519, -0.08951079, -0.030239927, -0.1368917, -0.11178951, -0.028913764, 0.15466857), target);
	target = MulAdd(nf1, MF4x4(-0.1720602, 0.049961366, -0.035956968, 0.01072738, 0.093655944, -0.028308686, -0.07628571, 0.09549064, -0.002988198, 0.06946468, 0.17164339, -0.16626763, 0.11002801, -0.13791496, -0.05334689, 0.050957866), target);
	target = MulAdd(ng1, MF4x4(0.067476556, 0.018401565, 0.02231447, 0.14312652, 0.14491569, 0.03304159, 0.2667232, -0.23096946, 0.011412218, -0.033295278, 0.006336338, 0.054895587, 0.031594772, -0.03772589, -0.08373306, 0.040909506), target);
	target = MulAdd(nh1, MF4x4(0.03497658, -0.025716685, -0.16338083, 0.028354604, 0.13035797, 0.0010428666, 0.13506557, -0.23274136, 0.016426807, 0.005891126, -0.030560384, 0.054110117, 0.012959187, -0.033846233, 0.079321414, -0.08366125), target);
	target = MulAdd(ni1, MF4x4(-0.17821713, 0.0037684473, 0.057483234, 0.038107146, -0.10401292, 0.020576356, -0.012016484, 0.010923387, 0.028446645, -0.027637433, 0.11687413, -0.07261914, -0.049263023, -0.06475644, -0.024119789, -0.029610662), target);
	target = MulAdd(na2, MF4x4(-0.022396808, -0.048420932, -0.02559588, 0.064104095, -0.2238012, -0.041249584, -0.09579613, 0.07697319, -0.058794957, -0.0134507725, -0.037161227, 0.08851301, -0.06766741, -0.036019377, 0.13610823, -0.063773625), target);
	target = MulAdd(nb2, MF4x4(-0.111936666, 0.0015700395, -0.18472138, -0.09797969, 0.010897245, 0.036488175, -0.08795422, -0.07408578, 0.1483729, -0.06495232, 0.080542035, -0.10570226, -0.01910507, 0.083303586, 0.15487678, 0.09761835), target);
	target = MulAdd(nc2, MF4x4(0.013546343, 0.12007825, -0.08906977, -0.032903753, -0.07735022, 0.074112795, 0.019404477, 0.012522555, -0.23720813, 0.03610346, -0.011151242, -0.09428033, -0.04208847, 0.08472888, -0.0941527, 0.1656356), target);
	target = MulAdd(nd2, MF4x4(-0.25968832, 0.023167782, -0.03399193, -0.025605416, 0.101124994, -0.03928416, 0.046708047, 0.0940108, -0.25001726, 0.06509968, -0.13399917, 0.14300269, 0.020019464, 0.09823798, -0.2859548, 0.15752983), target);
	target = MulAdd(ne2, MF4x4(0.06779552, -0.048957087, 0.14341845, 0.008796376, 0.30520636, 0.085243754, 0.09708159, 0.120880716, -0.082815446, -0.10173312, 0.21042523, -0.0104252035, 0.012946593, 0.048153225, -0.023779962, -0.22626428), target);
	target = MulAdd(nf2, MF4x4(-0.045614652, -0.1368418, -0.07421652, 0.010353576, 0.022773737, -0.034736004, -0.030603807, 0.0408453, 0.16829208, -0.028303532, 0.115394354, 0.0016284953, 0.06252144, 0.0025463477, -0.035674695, -0.09269994), target);
	target = MulAdd(ng2, MF4x4(0.029739881, 0.010787098, 0.0037744232, -0.031569265, -0.040358283, 0.031814087, 0.018036583, -0.035894874, -0.063151926, -0.109803386, -0.07274231, 0.0032429527, 0.0074872132, 0.05725981, 0.060606975, 0.061117698), target);
	target = MulAdd(nh2, MF4x4(-0.090809055, -0.03279648, -0.039354723, 0.14036313, -0.013013246, -0.07712587, -0.05239944, 0.03066829, 0.10737496, 0.076186314, -0.19699359, -0.036594667, 0.21938333, -0.04839966, 0.1286612, 0.013338615), target);
	target = MulAdd(ni2, MF4x4(-0.1429745, -0.07955227, -0.115608715, 0.14228356, -0.05602207, 0.02558927, -0.11061171, 0.06673638, -0.049651172, -0.021392899, -0.06468659, 0.039141133, -0.039755132, -0.050199732, 0.011340825, -0.00960286), target);
	target = MulAdd(na3, MF4x4(-0.065777004, 0.025236372, -0.098756045, -0.0066504143, -0.0832726, -0.040675264, 0.04911827, 0.033635136, -0.28793526, -0.10226347, 0.068537354, -0.2860185, -0.0550898, -0.033459336, -0.04448749, 0.11041132), target);
	target = MulAdd(nb3, MF4x4(-0.00013023219, 0.007373967, 0.04127884, -0.04456252, 0.06467729, -0.023159763, -0.098877944, 0.015409203, 0.15005386, 0.17018975, -0.047596633, -0.08832008, 0.261034, 0.14298894, 0.10107278, 0.0667279), target);
	target = MulAdd(nc3, MF4x4(0.07939445, -0.08513146, -0.056983568, 0.040726192, 0.020092426, 0.18478346, 0.025876757, 0.030642727, -0.12265552, 0.002464858, -0.020372186, 0.070551656, -0.016353855, -0.11511243, -0.09484669, -0.08860525), target);
	target = MulAdd(nd3, MF4x4(-0.08422405, 0.022759112, -0.12475361, 0.15862978, 0.111085795, 0.07579316, -0.007671498, -0.2048156, 0.17000435, 0.05883048, 0.18549366, -0.228149, -0.14611648, -0.1293601, 0.12878643, -0.07917457), target);
	target = MulAdd(ne3, MF4x4(-0.08697763, 0.0049046283, 0.06277697, 0.25657007, -0.037057158, -0.13358995, 0.2738289, 0.23121043, 0.32146227, 0.9468732, -0.09779261, -0.009769717, 0.0027131666, 0.118656114, 0.0898452, 0.22487496), target);
	target = MulAdd(nf3, MF4x4(-0.009855616, -0.26240128, 0.0801256, 0.05871007, -0.21371177, 0.18926387, -0.23380044, -0.09474009, 0.06469363, -0.011632477, 0.025565358, 0.07108313, 0.10727917, -0.00026592708, 0.10903209, -0.03030383), target);
	target = MulAdd(ng3, MF4x4(-0.0053380155, 0.033946496, -0.06860304, 0.0837713, -0.19269274, 0.08148278, -0.024386114, 0.022558022, -0.10444353, -0.042082686, 0.1903784, -0.077984534, -0.0065324833, 0.014674045, -0.18835127, 0.0013458942), target);
	target = MulAdd(nh3, MF4x4(0.003491147, -0.0619422, 0.038574003, 0.059497047, -0.15528834, -0.007080539, -0.16295113, -0.044733614, -0.0067163864, 0.08186305, 0.11124116, -0.12240357, 0.12911586, -0.020327786, 0.084354304, 0.0617812), target);
	target = MulAdd(ni3, MF4x4(0.07007616, 0.011843434, -0.029149607, -0.0033018868, 0.027770158, 0.13727912, -0.12729046, 0.2015703, 0.096229255, 0.013653448, 0.053937647, -0.029171295, 0.034246232, -0.09088042, 0.080427885, -0.114031985), target);
	conv2d_2_tf1[gxy] = target;

	target = MF4(0.016709281, 0.012619587, -0.017232165, -0.04396106);
	target = MulAdd(a1, MF4x4(0.036752462, 0.029649748, -0.09748701, 0.059650358, 0.13616882, 0.013703124, -0.14998761, 0.009004554, 0.07992881, 0.022163173, -0.018146321, -0.08414139, -0.10911252, -0.016669272, 0.056696363, -0.08302073), target);
	target = MulAdd(b1, MF4x4(0.12478577, 0.028158983, 0.07586349, 0.12842986, -0.006957239, -0.1160528, 0.023359532, -0.0074758576, -0.15942998, -0.06529529, -0.153319, -0.078501165, -0.18118988, 0.2001499, -0.31065115, -0.055492736), target);
	target = MulAdd(c1, MF4x4(0.03806193, 0.00058707164, -0.06611409, -0.045297977, 0.024692483, 0.09514936, 0.12853955, 0.11280573, -0.023200573, -0.1503142, -0.19710632, -0.033298586, 0.00087093137, 0.061145596, -0.004629127, -0.014288893), target);
	target = MulAdd(d1, MF4x4(0.01509754, 0.000975345, 0.043960508, 0.022261515, -0.07704468, 0.086596936, -0.13879523, 0.26205274, -0.014519523, -0.12089183, 0.0046606623, -0.028361473, 0.034736868, -0.12085262, -0.019312797, -0.1901168), target);
	target = MulAdd(e1, MF4x4(-0.22042033, -0.067241855, -0.0011751472, -0.3089443, -0.17684302, -0.07348887, -0.037950914, 0.07932659, -0.13587996, -0.19734861, 0.27510792, 0.15798965, 0.070934966, -0.24996722, 0.22142075, -0.1549704), target);
	target = MulAdd(f1, MF4x4(-0.06863547, 0.12449067, 0.00033030356, -0.07413546, 0.124544054, 0.049810465, 0.012467352, -0.040705148, 0.2043941, -0.1648197, 0.047376834, -0.072514415, 0.051701315, 0.22315136, 0.24103536, 0.042497516), target);
	target = MulAdd(g1, MF4x4(0.123373166, 0.16414459, -0.08505689, -0.052690018, 0.11099723, -0.008846635, 0.03483504, 0.03459058, 0.036431137, -0.022281377, -0.0747196, -0.06604844, 0.0034591674, 0.10690525, -0.01045302, -0.036992412), target);
	target = MulAdd(h1, MF4x4(-0.19597553, -0.32721582, 0.20590895, 0.07775533, 0.1393974, 0.10618747, 0.034401745, -0.0008929772, 0.014548279, -0.066054046, -0.051273774, 0.043616574, -0.10099313, 0.021435626, -0.021498548, -0.09212177), target);
	target = MulAdd(i1, MF4x4(0.15320238, 0.16471805, 0.032097213, 0.020770807, 0.025557829, -0.10821472, -0.13672188, 0.07703349, -0.013789304, 0.07158349, 0.07591088, 0.017019821, -0.14680074, -0.14204682, -0.0040901196, 0.04855082), target);
	target = MulAdd(a2, MF4x4(0.092040926, -0.1696223, 0.0035175297, -0.1266837, -0.017807435, -0.05324885, 0.052235745, 0.0053132256, -0.26360056, 0.044413272, -0.07820576, 0.09869417, 0.05975259, 0.058592863, -0.03391289, -0.0463601), target);
	target = MulAdd(b2, MF4x4(-0.17156146, -0.06575004, 0.18721104, -0.028241588, 0.09805437, 0.15232502, -0.09398395, -0.14233524, 0.07775248, 0.14465685, 0.045949064, -0.03276368, -0.0028104451, 0.15150578, -0.04324162, -0.054190543), target);
	target = MulAdd(c2, MF4x4(-0.025806474, 0.122085676, 0.06087487, 0.10123448, -0.021339104, -0.082396485, -0.049415596, 0.016665734, -0.01075966, -0.18270788, -0.21377993, 0.0107189575, -0.14957522, -0.23296382, -0.20353965, 0.12026796), target);
	target = MulAdd(d2, MF4x4(-0.03165497, 0.20380338, 0.03153878, 0.08439275, 0.010899999, 0.031973626, 0.05603482, -0.050522227, -0.08342698, -0.23481508, -0.042175133, 0.008809877, 0.06622943, -0.08636996, 0.072220184, -0.06921989), target);
	target = MulAdd(e2, MF4x4(-0.07053526, 0.061910875, 0.0023930974, 0.28627953, 0.14615639, 0.058881626, -0.14786066, -0.06661333, 0.30343568, 0.3641429, -0.18411386, -0.16842756, 0.17510016, 0.05421069, -0.10123317, 0.06964223), target);
	target = MulAdd(f2, MF4x4(-0.21576017, -0.06363907, -0.18081437, 0.24664907, -0.09735165, 0.057592265, -0.083031796, 0.01964763, -0.031470213, -0.18838522, 0.05072108, -0.10001062, -0.008070019, -0.111055255, -0.07987868, -0.00753598), target);
	target = MulAdd(g2, MF4x4(0.061441302, -0.078763954, 0.005878039, 0.00055347115, -0.09499128, 0.09156834, 0.13328615, 0.043168213, -0.029688388, -0.36990175, 0.1696049, -0.034198307, -0.019164128, -0.09315934, -0.0028499612, 0.043170534), target);
	target = MulAdd(h2, MF4x4(-0.1382709, -0.24728169, 0.06712876, 0.08034291, -0.091681674, 0.007854249, 0.23301663, -0.055606913, 0.28568286, 0.2942446, -0.059362978, -0.074468486, 0.11220201, 0.1190768, -0.025883239, 0.05220736), target);
	target = MulAdd(i2, MF4x4(0.11531199, 0.3396637, 0.0085975, 0.013585601, 0.080540046, 0.049160656, -0.05710246, 0.005991695, 0.1438699, -0.3402577, -0.07053711, -0.16263331, -0.09119706, 0.0076426715, 0.08115436, -0.04297937), target);
	target = MulAdd(a3, MF4x4(0.052113753, 0.026635656, 0.10596492, 0.022013694, -0.010665535, -0.077066846, 0.06217549, -0.05517532, -0.056953914, -0.08185771, -0.020402161, -0.043208323, -0.012995452, -0.019643994, 0.006990098, -0.045173813), target);
	target = MulAdd(b3, MF4x4(0.17718889, 0.0038756612, -0.11827346, -0.2329743, -0.1793552, -0.08469043, 0.13127111, 0.051736213, 0.2438145, -0.12342349, -0.11737657, -0.20728126, -0.1685289, 0.11266314, 0.076692104, -0.1616657), target);
	target = MulAdd(c3, MF4x4(-0.020399734, -0.23063114, -0.21987145, -0.082217745, 0.116614126, 0.10273191, 0.101865344, 0.011308658, 0.056851316, -0.050016683, -0.009367647, -0.09125666, -0.07041454, 0.051433813, -0.006439021, 0.014740233), target);
	target = MulAdd(d3, MF4x4(0.051031563, -0.03535238, -0.080701895, -0.055633444, -0.03865236, 0.04696362, -0.016610028, -0.031190962, -0.06230007, 0.11438899, 0.002950869, 0.056986533, 0.06503178, -0.07315137, -0.108793534, 0.1280907), target);
	target = MulAdd(e3, MF4x4(0.13356781, 0.0902099, 0.0018598923, 0.054726165, 0.13937949, -0.14195664, -0.09394637, -0.23538189, 0.15451878, 0.07872618, 0.12278696, 0.07883152, -0.079190545, 0.0060577407, 0.12348955, 0.1273284), target);
	target = MulAdd(f3, MF4x4(-0.2844292, -0.043685716, 0.16975491, -0.03931876, -0.045410622, -0.043887924, -0.06207469, -0.095141575, -0.01910207, 0.036241893, -0.099487804, 0.006061581, 0.058822997, -0.0017064888, 0.04472078, 0.10879998), target);
	target = MulAdd(g3, MF4x4(-0.0531857, 0.20407021, -0.048386984, 0.02700043, -0.024223981, -0.075209916, 0.022038897, 0.14877595, -0.13606672, -0.12767786, 0.06151931, -0.05388265, -0.013327909, 0.03979459, -0.065765746, -0.07282832), target);
	target = MulAdd(h3, MF4x4(-0.037340526, -0.21573111, 0.1269642, 0.04037458, 0.12398714, 0.2021396, -0.17674391, 0.0147291655, 0.058955196, -0.0015507584, 0.23541385, -0.145222, 0.20797801, -0.13098398, 0.003790887, -0.037615184), target);
	target = MulAdd(i3, MF4x4(-0.09600365, 0.22067653, 0.09930907, -0.07818997, 0.08789531, -0.011831723, -0.07886167, -0.020031728, 0.00084014103, 0.081453785, -0.007063985, -0.007725119, -0.054167047, 0.041189484, 0.007090602, -0.037227746), target);
	target = MulAdd(na1, MF4x4(-0.017512068, -0.22621062, -0.011807716, -0.064745784, -0.06731377, -0.05784807, 0.050968435, 0.0674237, -0.10051867, -0.08823096, 0.015287385, 0.057430997, -0.08142708, 0.06392106, 0.062179778, 0.02986153), target);
	target = MulAdd(nb1, MF4x4(-0.23300487, 0.0051065637, 0.23627552, 0.053352736, 0.15926725, 0.088776834, 0.06346916, 0.10811631, -0.05167443, -0.0029013795, -0.14792533, 0.0027736027, 0.31416926, -0.083981514, -0.051183276, -0.07321588), target);
	target = MulAdd(nc1, MF4x4(-0.008830604, 0.2482698, 0.14781001, 0.096101865, -0.021321455, 0.060337346, 0.015929816, -0.039313477, 0.09857251, -0.04800572, -0.101969965, 0.09313578, 0.048235282, 0.05253759, 0.04893083, -0.1115041), target);
	target = MulAdd(nd1, MF4x4(0.14629705, 0.10310787, 0.07421539, -0.2541191, 0.061346315, -0.12419151, 0.08524945, -0.029404115, 0.022251071, -0.12156319, -0.011553011, -0.012188503, 0.10256824, -0.010299354, 0.06765391, -0.08820727), target);
	target = MulAdd(ne1, MF4x4(-0.21080357, -0.4021113, 0.035816908, 0.7000948, 0.21632199, 0.111284, -0.012059465, 0.023438603, 0.25428426, -0.15475942, 0.09260869, 0.14866553, -0.14576761, 0.22147575, 0.023831703, 0.074204154), target);
	target = MulAdd(nf1, MF4x4(0.049143, 0.2896474, 0.18784785, 0.036332216, -0.019188514, -0.0049673393, -0.012528154, 0.13640659, -0.16241746, -0.09813068, 0.019516123, -0.0084478175, 0.058226462, -0.22123648, -0.14045192, -0.023666197), target);
	target = MulAdd(ng1, MF4x4(0.05800501, 0.060431264, -0.04097961, 0.03453522, -0.06560738, -0.092472866, -0.06397347, 0.14444739, 0.025983555, -0.030899955, -0.042766206, -0.06060983, -0.01918705, -0.040768683, 0.052782744, 0.09638819), target);
	target = MulAdd(nh1, MF4x4(-0.10073037, -0.22703889, -0.0010382081, 0.05074596, 0.03396179, -0.068848714, 0.0861629, 0.26089123, 0.022775311, -0.014949607, -0.094047025, -0.0027702095, 0.1917307, 0.11404618, -0.10283004, 0.025103435), target);
	target = MulAdd(ni1, MF4x4(0.030860173, 0.13404387, 0.05976607, -0.093795955, 0.016835473, -0.020731337, 0.037207656, 0.126881, 0.0074429302, -0.10216514, -0.031499624, -0.083616905, -0.023030072, 0.014815519, -0.08937133, 0.11519909), target);
	target = MulAdd(na2, MF4x4(0.13568272, 0.122503586, -0.04963004, -0.0010412488, -0.10429815, 0.068515815, -0.2886607, -0.09816482, 0.051498115, 0.0017436935, -0.03835064, -0.13563691, 0.035978988, 0.06407808, 0.035696708, 0.10724592), target);
	target = MulAdd(nb2, MF4x4(-0.01266009, -0.0073259426, 0.006877496, 0.054289263, -0.07651681, -0.1118919, -0.012793396, -0.07368392, -0.01061065, -0.10134513, -0.1434462, 0.04688037, 0.19463971, 0.15506972, -0.23626265, 0.023359938), target);
	target = MulAdd(nc2, MF4x4(-0.09461492, -0.036462337, -0.16172805, 0.15837577, -0.08643621, 0.035166703, 0.061290734, -0.108064786, -0.12176273, 0.026083494, 0.06523428, -0.053249013, 0.12905678, -0.11907856, 0.015970876, -0.064191975), target);
	target = MulAdd(nd2, MF4x4(-0.042738717, -0.022231134, -0.03853537, -0.08111096, 0.040522724, 0.1349429, 0.1058772, -0.13941672, -0.04256023, -0.05742218, 0.19752051, -0.0942069, 0.0080565745, 0.06621899, -0.0018314277, -0.10499731), target);
	target = MulAdd(ne2, MF4x4(0.30080974, -0.053357773, -0.054159783, -0.13733824, -0.22567864, 0.0092003625, 0.055152208, 0.1307246, -0.05244466, 0.041202605, 0.04831643, 0.33047366, 0.11396535, 0.42621002, 0.03459549, 0.0347411), target);
	target = MulAdd(nf2, MF4x4(0.05305111, 0.076122396, -0.08781792, -0.0069180895, 0.050885174, -0.0042734225, -0.04444145, 0.012016987, 0.122985676, -0.048455186, -0.17231132, -0.013408545, -0.12154411, -0.39617026, -0.13028972, 0.075709775), target);
	target = MulAdd(ng2, MF4x4(-0.0041923127, 0.027921822, 0.026247777, -0.020477489, 0.042308033, 0.01580411, -0.066128924, -0.058847815, 0.00095708045, 0.061050877, 0.042081635, 0.09856459, -0.038021386, -0.18332537, 0.12586181, -0.085686505), target);
	target = MulAdd(nh2, MF4x4(0.02818681, 0.2021728, -0.059565738, -0.02425082, 0.12646812, -0.02011973, -0.0052335905, -0.13634421, -0.036117353, 0.102945946, -0.025090111, 0.06759408, 0.08294928, 0.06963724, 0.07145511, 0.061311223), target);
	target = MulAdd(ni2, MF4x4(-0.04572639, -0.1857778, -0.020896941, -0.1320479, -0.08060074, 0.15807647, 0.08087496, 0.09661483, 0.068133175, -0.03192162, -0.059143748, -0.023069799, 0.06820739, -0.10254724, -0.08489362, -0.12950915), target);
	target = MulAdd(na3, MF4x4(-0.0701631, -0.06492232, 0.07158485, -0.0474961, -0.08277424, -0.0046874695, -0.036980134, 0.032411482, -0.040205367, -0.11806291, -0.12003579, 0.09404628, 0.13509527, -0.07151287, -0.17165148, -0.082828976), target);
	target = MulAdd(nb3, MF4x4(-0.23416395, -0.005059655, 0.03932381, 0.15610525, 0.1310776, 0.10495845, -0.23422901, -0.017912678, 0.010918836, -0.18813089, -0.287215, 0.21294762, 0.10265387, -0.06561, -0.11778113, 0.06950684), target);
	target = MulAdd(nc3, MF4x4(-0.0028815586, 0.07538225, -0.03291754, 0.047160495, -0.07666219, -0.15290219, -0.17513353, 0.04385531, 0.005002826, -0.01648364, -0.11297704, -0.03472268, -3.882572e-05, -0.16454723, -0.023212174, 0.15911958), target);
	target = MulAdd(nd3, MF4x4(-0.08348401, 0.029882649, 0.21708311, -0.05323357, -0.07704958, -0.016631678, -0.060494706, 0.10649385, -0.29307103, 0.052837957, 0.120730795, 0.034656238, -0.0004268264, 0.20290168, 0.10882499, -0.04060937), target);
	target = MulAdd(ne3, MF4x4(-0.27893996, -0.18981667, 0.15798293, -0.030922053, -0.09654163, 0.27498308, -0.019050546, 0.16028336, -0.09720187, 0.10653666, -0.23317258, 0.20285597, 0.38110915, 0.022553165, 0.1321882, 1.1575677), target);
	target = MulAdd(nf3, MF4x4(0.124580376, 0.067915864, -0.060147874, 0.053467464, -0.0038043377, 0.0289266, 0.118544504, -0.13358372, -0.076356836, -0.09143476, -0.0685938, -0.067568906, -0.0121121425, 0.040102568, -0.2717469, 0.16300786), target);
	target = MulAdd(ng3, MF4x4(0.002691588, -0.12474235, 0.12467866, -0.09753572, -0.010205263, -0.0006359913, 0.015651824, -0.24048246, 0.1586161, 0.004588076, 0.04444844, -0.01231289, -0.06640105, -0.063054025, 0.102068566, 0.1259912), target);
	target = MulAdd(nh3, MF4x4(0.0028770883, 0.16986279, 0.060900114, -0.08368565, -0.26938817, -0.24303895, 0.29375112, -0.059524175, -0.13170256, 0.11625376, -0.1326183, -0.0012333714, -0.13267988, -0.0071024853, -0.031031137, 0.07532496), target);
	target = MulAdd(ni3, MF4x4(0.12214155, -0.041841783, -0.052751888, 0.062362764, -0.04766777, 0.0540806, 0.3322733, -0.3677417, 0.12217059, 0.05566961, -0.012429841, -0.10585391, -0.056920152, 0.14918473, -0.0054139746, 0.04940436), target);
	conv2d_2_tf2[gxy] = target;
}

//!PASS 4
//!DESC Conv-4x3x3x24
//!IN conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2
//!OUT conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2
//!BLOCK_SIZE 8
//!NUM_THREADS 64

void Pass4(uint2 blockStart, uint3 threadId) {
	uint2 gxy = Rmp8x8(threadId.x) + blockStart;
	uint2 inputSize = GetInputSize();
	if (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {
		return;
	}

	float2 inputPt = GetInputPt();
	float2 pos = (gxy + 0.5f) * inputPt;

	// [ a, d, g ]
	// [ b, e, h ]
	// [ c, f, i ]
	MF4 a1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e1 = conv2d_2_tf.SampleLevel(sam, pos, 0);
	MF4 f1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na1 = max(-a1, 0);
	MF4 nb1 = max(-b1, 0);
	MF4 nc1 = max(-c1, 0);
	MF4 nd1 = max(-d1, 0);
	MF4 ne1 = max(-e1, 0);
	MF4 nf1 = max(-f1, 0);
	MF4 ng1 = max(-g1, 0);
	MF4 nh1 = max(-h1, 0);
	MF4 ni1 = max(-i1, 0);

	a1 = max(a1, 0);
	b1 = max(b1, 0);
	c1 = max(c1, 0);
	d1 = max(d1, 0);
	e1 = max(e1, 0);
	f1 = max(f1, 0);
	g1 = max(g1, 0);
	h1 = max(h1, 0);
	i1 = max(i1, 0);

	MF4 a2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e2 = conv2d_2_tf1.SampleLevel(sam, pos, 0);
	MF4 f2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na2 = max(-a2, 0);
	MF4 nb2 = max(-b2, 0);
	MF4 nc2 = max(-c2, 0);
	MF4 nd2 = max(-d2, 0);
	MF4 ne2 = max(-e2, 0);
	MF4 nf2 = max(-f2, 0);
	MF4 ng2 = max(-g2, 0);
	MF4 nh2 = max(-h2, 0);
	MF4 ni2 = max(-i2, 0);

	a2 = max(a2, 0);
	b2 = max(b2, 0);
	c2 = max(c2, 0);
	d2 = max(d2, 0);
	e2 = max(e2, 0);
	f2 = max(f2, 0);
	g2 = max(g2, 0);
	h2 = max(h2, 0);
	i2 = max(i2, 0);

	MF4 a3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e3 = conv2d_2_tf2.SampleLevel(sam, pos, 0);
	MF4 f3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na3 = max(-a3, 0);
	MF4 nb3 = max(-b3, 0);
	MF4 nc3 = max(-c3, 0);
	MF4 nd3 = max(-d3, 0);
	MF4 ne3 = max(-e3, 0);
	MF4 nf3 = max(-f3, 0);
	MF4 ng3 = max(-g3, 0);
	MF4 nh3 = max(-h3, 0);
	MF4 ni3 = max(-i3, 0);

	a3 = max(a3, 0);
	b3 = max(b3, 0);
	c3 = max(c3, 0);
	d3 = max(d3, 0);
	e3 = max(e3, 0);
	f3 = max(f3, 0);
	g3 = max(g3, 0);
	h3 = max(h3, 0);
	i3 = max(i3, 0);

	MF4 target = MF4(0.15373076, 0.023519197, -0.049319107, -0.08283358);
	target = MulAdd(a1, MF4x4(0.060878627, -0.041988216, 0.104058675, -0.088971175, 0.037815195, -0.033195835, 0.014279358, 0.06304454, 0.02948025, 0.006056027, -0.02087268, -0.1090193, -0.0034371826, -0.03975976, -0.06009851, 0.12365947), target);
	target = MulAdd(b1, MF4x4(0.079548575, -0.16905668, -0.13728581, -0.03805935, 0.050417993, 0.04001516, -0.045917254, 0.043337673, -0.07575137, 0.017724466, -0.023716906, 0.012353904, -0.0853222, -0.09868139, 0.044824444, -0.0141505785), target);
	target = MulAdd(c1, MF4x4(0.09399756, -0.14398341, -0.2721442, 0.016207851, -0.10623493, 0.057902634, 0.10767521, 0.0003635082, 0.014634943, 0.09112885, 0.11872027, 0.036644384, -0.046260875, -0.0743102, -0.19018789, 0.036393598), target);
	target = MulAdd(d1, MF4x4(0.09814595, 0.0044509294, 0.13141516, 0.091252774, -0.09662514, -0.033599697, 0.12196037, 0.21599433, 0.1194499, 0.04127431, 0.039627396, -0.031521305, -0.14756238, -0.09555712, -0.010698389, -0.09642848), target);
	target = MulAdd(e1, MF4x4(-0.008813449, 0.015096444, 0.23331937, 0.097849704, -0.0094626965, 0.09468486, -0.14536959, -0.48678625, 0.11508988, 0.13658337, 0.07481205, -0.14646451, -0.056061424, -0.013553051, 0.1893297, -0.07424693), target);
	target = MulAdd(f1, MF4x4(0.092239104, -0.079855025, -0.12919873, -0.006577375, -0.4529186, 0.08633541, -0.027304357, -0.21013555, -0.03914936, 0.074918106, -0.009362854, -0.015590051, 0.23523058, 0.075767435, -0.042212676, -0.0037648496), target);
	target = MulAdd(g1, MF4x4(0.06423107, -0.080711946, 0.014235396, 0.017949343, 0.048689805, -0.10082265, 0.04964177, 0.103560664, 0.056355603, 0.09673206, -0.062948905, -0.036618367, -0.07845171, -0.010790115, -0.13978757, -0.025738737), target);
	target = MulAdd(h1, MF4x4(0.064559884, -0.042264454, -0.110668264, 0.124921605, 0.0047526294, 0.044878427, -0.15133426, -0.050278753, 0.08540561, 0.10420466, -0.021862527, 0.06804833, 0.094847456, 0.14177199, 0.04205903, 0.027875852), target);
	target = MulAdd(i1, MF4x4(-0.025060967, -0.04341538, -0.005267881, -0.06606841, -0.06347963, 0.062125452, 0.024389729, -0.08982404, -0.0062638335, 0.11981404, 0.054283164, -0.084352404, 0.0069115954, -0.064623505, 0.028570656, -0.069944404), target);
	target = MulAdd(a2, MF4x4(-0.026635213, -0.031471547, 0.12941289, 0.014990064, -0.06946961, 0.034871764, -0.0023429494, 0.039788067, -0.014846336, 0.07696896, 0.009524336, 0.06702693, 0.06922799, 0.15218733, -0.108957425, 0.02397873), target);
	target = MulAdd(b2, MF4x4(0.04425317, -0.019614218, 0.020195834, -0.06853279, -0.10681463, -0.038610324, 0.1985278, 0.1917614, -0.15072219, 0.019215003, -0.07190246, -0.0710555, 0.06319588, 0.123843595, 0.037890248, -0.10028418), target);
	target = MulAdd(c2, MF4x4(0.059803672, 0.08516648, 0.03677657, -0.010275112, -0.047332514, 0.0123374835, 0.06696025, -0.016793806, -0.086841464, 0.016270785, -0.12735787, -0.12676108, 0.16822693, 0.15760474, -0.07559359, -0.07678976), target);
	target = MulAdd(d2, MF4x4(-0.104641154, 0.07192061, 0.23210934, 0.11417999, 0.04492395, -0.118827716, -0.12041658, 0.19749922, 0.09203569, 0.019726515, -0.055105124, 0.05295804, -0.005788939, 0.056638427, 0.065282024, -0.09013673), target);
	target = MulAdd(e2, MF4x4(0.028824141, 0.27045545, 0.073205985, -0.082846776, -0.2143439, -0.026223134, 0.16712476, 0.07194315, -0.019990921, -0.28113925, 0.13138968, 0.053820554, 0.3113366, 0.20013627, 0.010963992, 0.07630061), target);
	target = MulAdd(f2, MF4x4(0.15658687, 0.07025806, -0.09104068, 0.07163445, -0.03478211, 0.015337765, 0.083114274, 0.010839639, -0.0542002, 0.0768983, 0.074233785, -0.10077115, -0.12870364, -0.08656189, -0.04770647, -0.025078414), target);
	target = MulAdd(g2, MF4x4(-0.08102263, -0.07714586, -0.042745892, 0.0374993, -0.09478303, -0.07571532, -0.062317267, -0.034587506, -0.01396296, -0.053482197, -0.04521547, -0.116828814, -0.07759964, 0.07154679, 0.06632562, -0.069989264), target);
	target = MulAdd(h2, MF4x4(0.0066547785, 0.13140622, 0.08087736, -0.25154832, -0.039879136, -0.010373583, -0.05184014, 0.012249648, -0.096870914, -0.020647451, 0.087357886, 0.042756695, 0.09706797, 0.16477491, 0.12650236, -0.0839691), target);
	target = MulAdd(i2, MF4x4(-0.010547578, -0.013264216, 0.07298194, -0.06801917, -0.020884428, -0.071191095, 0.0041795867, -0.03743981, -0.19142745, -0.023131248, 0.0381656, -0.014476577, 0.076137036, 0.08133924, -0.085573785, 0.01067451), target);
	target = MulAdd(a3, MF4x4(-0.15004109, -0.04713592, -0.05823828, -0.03564525, -0.18593709, 0.11510138, 0.10260254, 0.10952684, -0.056938007, 0.11468128, -0.07422465, 0.013310582, 0.03276255, -0.08601149, 0.074078046, 0.06268768), target);
	target = MulAdd(b3, MF4x4(-0.03183145, -0.080839306, 0.0077147027, 0.2783979, -0.020172173, 0.11772608, 0.19941199, 0.089674905, -0.1645803, 0.09871185, 0.103870094, -0.02221705, 0.18880293, -0.02838061, 0.1329911, 0.110804334), target);
	target = MulAdd(c3, MF4x4(-0.0727793, -0.15429437, 0.07309872, 0.052409347, 0.07621416, 0.014342246, 0.09742559, -0.006178975, -0.00049866503, 0.01627198, 0.1749332, -0.023455271, 0.084430106, -0.074995294, 0.024229486, 0.006074203), target);
	target = MulAdd(d3, MF4x4(0.096733555, -0.04178045, -0.016891489, 0.06953366, 0.005025407, 0.13799861, 0.003864609, -0.0056246608, 0.04448754, 0.14127962, -0.08169796, 0.049868934, -0.07307801, 0.0970107, 0.042104065, 0.012651146), target);
	target = MulAdd(e3, MF4x4(-0.17528427, -0.42639711, 0.11246585, 0.26789048, -0.045942087, 0.23083447, 0.2616979, 0.0051987628, -0.3405826, -0.02898998, -0.12387437, -0.06811704, -0.13623591, 0.085379034, 0.1163564, -0.3684051), target);
	target = MulAdd(f3, MF4x4(0.105229065, -0.009456556, -0.09346365, 0.16764155, 0.053806845, 0.032471523, 0.22268786, -0.00045551482, -0.038868275, 0.09682891, -0.072218366, -0.15059048, -0.06828941, -0.08986867, 0.009097031, 0.1784724), target);
	target = MulAdd(g3, MF4x4(0.015004372, 0.0059916377, 0.06578616, -0.03323271, -0.016655194, -0.0037565026, -0.016965717, 0.123583436, 0.05276917, 0.07713196, -0.08393188, -0.06575901, -0.026482249, 0.07345747, -0.029773988, -0.098376736), target);
	target = MulAdd(h3, MF4x4(0.0015305893, -0.09495176, 0.038808357, 0.0035307724, -0.08659931, 0.12207447, 0.08526738, 0.19026709, 0.05297383, 0.02768884, -0.1678504, -0.30386385, 0.025181111, 0.03945659, 0.17099062, 0.029333467), target);
	target = MulAdd(i3, MF4x4(0.21933754, -0.10313659, -0.04901954, 0.10964564, -0.13104112, -0.020108605, 0.027046354, -0.07801803, 0.12369789, 0.1183686, -0.2176958, -0.041832034, 0.047641497, -0.04469799, -0.010872767, 0.046445683), target);
	target = MulAdd(na1, MF4x4(0.148908, 0.119546995, 0.09599242, 0.026430191, 0.004287343, -0.01410569, -0.026667995, -0.0033883103, -0.114997216, -0.117683105, -0.083241284, 0.0925183, 0.04929814, 0.1384929, 0.067604244, -0.010090262), target);
	target = MulAdd(nb1, MF4x4(0.17913392, -0.027995758, 0.25155705, 0.38675678, -0.0084490245, 0.11703253, -0.13717517, 0.024913544, -0.022265881, 0.029341036, -0.021509588, 0.021925684, -0.06447644, 0.055588942, -0.23970391, -0.24156545), target);
	target = MulAdd(nc1, MF4x4(-0.09896528, -0.17248964, 0.20294617, -0.16814777, 0.014902548, -0.032280933, 0.04340094, 0.016689163, -0.04480586, 0.04256907, -0.18132643, -0.0063551413, 0.061819937, 0.04628381, 0.006767698, 0.0061162747), target);
	target = MulAdd(nd1, MF4x4(0.15260129, -0.06680908, 0.032037478, -0.11269483, 0.02655564, -0.021874784, -0.06829202, -0.06577833, -0.009562943, 0.0015011907, 0.0124588655, 0.06603201, 0.011123314, 0.027462086, 0.057987396, -0.18905073), target);
	target = MulAdd(ne1, MF4x4(0.16752581, -0.48974037, -0.23990577, 0.27223033, -0.3773399, 0.08863033, -0.008062138, -0.077350825, -0.35848886, -0.053652804, 0.028900446, -0.06633484, 0.08034644, 0.10832985, 0.11753572, 0.09361), target);
	target = MulAdd(nf1, MF4x4(-0.070450164, -0.25812992, 0.11410226, -0.21115066, 0.21403445, 0.077668846, -0.11741976, 0.011133417, 0.120277226, -0.08427091, -0.057168204, 0.1925855, -0.11746336, 0.10269434, -0.07322618, -0.10409009), target);
	target = MulAdd(ng1, MF4x4(0.03575297, 0.047510248, -0.007979737, 0.031025993, -0.03234521, 0.08676478, 0.0035725946, -0.057138126, 0.022418533, 0.0050477074, -0.07923602, 0.030552208, -0.006946033, 0.013259726, -0.066337876, -0.01595059), target);
	target = MulAdd(nh1, MF4x4(0.022808606, -0.08600189, -0.0021296823, -0.12722832, -0.061637733, 0.03429111, 0.1716912, 0.012061466, -0.037751373, -0.043379158, 0.004443852, 0.006374207, 0.04551323, 0.13964722, 0.011221888, -0.058265697), target);
	target = MulAdd(ni1, MF4x4(0.1531455, -0.030335607, -0.00045989535, 0.016067028, 0.0050904215, -0.088213325, -0.09847688, -0.061282493, 0.040786967, 0.049954005, -0.015633572, 0.020150138, -0.086479515, -0.04847328, 0.008594881, -0.06341954), target);
	target = MulAdd(na2, MF4x4(0.022407485, 0.051172994, -0.07005926, 0.0029726303, 0.11993554, -0.027608547, 0.06194104, 0.19056575, -0.04243877, -0.114722855, 0.06236797, -0.06036638, -0.089428924, -0.07503292, -0.0024683257, 0.060040735), target);
	target = MulAdd(nb2, MF4x4(0.06874307, 0.029475406, -0.05025358, -0.04228223, 0.08292351, 0.0686724, -0.4738799, -0.041531645, 0.0615269, 0.03603044, -0.009950976, -0.030149357, 0.06910009, -0.016899468, -0.16924357, -0.066745326), target);
	target = MulAdd(nc2, MF4x4(0.012021045, -0.0028476904, -0.23050983, -0.11764533, 0.033747047, -0.0668547, -0.17645846, 0.058430642, 0.025553009, 0.11809977, -0.34416163, 0.029323732, -0.054547835, -0.0160696, 0.03192446, -0.11135748), target);
	target = MulAdd(nd2, MF4x4(0.19059187, 0.11761485, 0.06828622, -0.071383595, 0.17573558, -0.07326583, 0.29549947, 0.5370607, -0.1592557, 0.012467725, -0.02284002, -0.15567715, -0.022485673, -0.075606614, 0.02638997, 0.06499531), target);
	target = MulAdd(ne2, MF4x4(0.061065406, 0.034856595, 0.121818274, -0.28799838, -0.0054412605, -0.25181246, -0.3095022, 0.59951264, -0.14887947, 0.310832, 0.42532226, -0.50458944, 0.09077006, 0.0012851865, -0.049090795, -0.018807344), target);
	target = MulAdd(nf2, MF4x4(0.08625662, -0.08079708, 0.03560689, 0.021092743, 0.03330426, -0.10841074, 0.03042436, -0.10980985, -0.056732696, -0.02562971, -0.1828409, 0.25399944, 0.2152503, -0.019375121, -0.073344804, 0.04161207), target);
	target = MulAdd(ng2, MF4x4(-0.021478724, 0.015574761, 0.092981905, 0.04195265, -0.050123077, -0.13362321, 0.14641477, 0.22193475, -0.112343, 0.02624443, -0.13018239, 0.00833514, -0.0092335045, 0.015253402, -0.013441764, 0.028822897), target);
	target = MulAdd(nh2, MF4x4(0.025862357, -0.021355819, 0.10295669, 0.0615911, -0.102607384, -0.21350992, -0.0051344573, 0.062845446, -0.068726346, 0.10714023, -0.016227763, -0.055759374, 0.10889699, 0.07502395, -0.09149433, -0.00020285786), target);
	target = MulAdd(ni2, MF4x4(-0.0676785, -0.11517699, 0.012390956, -0.120551035, -0.1695143, -0.027560102, -0.04481715, -0.06955313, 0.03983824, 0.097748354, -0.02457515, -0.025119185, -0.003987165, -0.034221396, -0.004371428, 0.045199845), target);
	target = MulAdd(na3, MF4x4(0.1732521, -0.022186914, 0.023095943, 0.034811586, 0.05579798, 0.030366201, 0.050261993, 0.029239386, 0.012046298, 0.024326274, -0.06705734, -0.028883696, 0.019890117, 0.018180113, 0.15856597, 0.18605316), target);
	target = MulAdd(nb3, MF4x4(0.14001346, -0.21155912, -0.04503595, 0.053345755, -0.090209134, 0.023596361, 0.109940544, 0.04495405, 0.1154255, 0.08557325, 0.028999878, 0.06572874, -0.06701647, -0.059574578, -0.035772696, -0.25112775), target);
	target = MulAdd(nc3, MF4x4(0.06629787, 0.08039307, -0.13807642, 0.07134196, -0.04295903, -0.006060854, 0.08699088, 0.018854614, 0.024055403, 0.024039935, -0.08500348, -0.03041994, -0.12469508, -0.06752729, 0.023455527, 0.06100103), target);
	target = MulAdd(nd3, MF4x4(0.06566045, -0.19818264, 0.13119479, 0.25947747, -0.17939506, 0.005642733, 0.09516572, -0.015004266, -0.048418473, -0.0120703075, -0.18966949, -0.23252305, 0.04602659, -0.07620238, -0.08963158, -0.082796745), target);
	target = MulAdd(ne3, MF4x4(-0.01332639, -0.20567879, -0.027533831, -0.055890594, -0.06562438, 0.05992528, 0.15381408, -0.015261545, 0.14442064, 0.100258596, -0.0497336, 0.00076529477, 0.08915382, -0.25916958, 0.11629673, 0.50717276), target);
	target = MulAdd(nf3, MF4x4(-0.09708679, -0.17440423, -0.06424349, 0.024765793, -0.068865195, -0.030870711, -0.019785484, -0.09489355, 0.0029501836, -0.030186258, -0.059128, 0.02353537, -0.056624137, -0.03159645, -0.016295215, -0.07160536), target);
	target = MulAdd(ng3, MF4x4(0.006727234, -0.21366745, -0.07577386, -0.007462938, -0.17185695, -0.034567107, 0.15243205, 0.033333488, -0.08533551, 0.10143909, 0.02578666, -0.09097233, 0.026171222, -0.18809001, -0.03344314, 0.075811416), target);
	target = MulAdd(nh3, MF4x4(-0.007549739, -0.18698569, -0.12967056, 0.23008282, -0.21573843, -0.034550514, 0.13685697, -0.11938899, 0.14835912, 0.1284512, 0.034902997, 0.086076915, 0.016294781, -0.068496056, -0.01920739, 0.14567302), target);
	target = MulAdd(ni3, MF4x4(-0.04698844, 0.011898311, 0.1046441, 0.01991676, -0.042640552, -0.0012635426, 0.019563822, -0.16339815, -0.15451749, 0.0122954445, -0.15720376, -0.047094855, -0.047507558, -0.021503676, -0.04172817, -0.040319066), target);
	conv2d_3_tf[gxy] = target;
	
	target = MF4(-0.089817494, -0.046376515, -0.016165316, 0.0076574814);
	target = MulAdd(a1, MF4x4(0.051532425, 0.091096826, 0.14191705, 0.021257475, -0.043796312, 0.093881994, -0.005066956, -0.0023505734, -0.05945693, 0.009556036, -0.085642494, -0.0014123443, -0.0058722594, -0.024343085, 0.061728872, -0.0039950665), target);
	target = MulAdd(b1, MF4x4(-0.26865405, 0.009443461, 0.16867341, 0.622584, 0.058818102, 0.35006693, -0.059381735, -0.06257525, 0.09936295, -0.00443078, -0.10469712, 0.028571106, -0.040493533, 0.064946294, 0.06706766, -0.09373991), target);
	target = MulAdd(c1, MF4x4(0.06543985, 0.09986878, -0.19543362, 0.09373655, 0.0541375, 0.16537385, 0.026011372, -0.03605416, 0.019205978, -0.07212895, 0.024384554, -0.007675373, 0.12836097, -0.04166636, 0.055825308, -0.020801648), target);
	target = MulAdd(d1, MF4x4(-0.0015450468, 0.13572882, 0.12091456, 0.1166015, -0.009230995, -0.02709468, 0.24357562, -0.041073736, 0.10431756, -0.09081733, 0.024183141, -0.12385413, 0.009050871, 0.04241893, -0.07000264, -0.045027476), target);
	target = MulAdd(e1, MF4x4(0.1844817, 0.26336753, 0.3737102, -0.06259004, 0.1617452, -0.25852692, 0.09539696, 0.077052556, -0.1127802, -0.04362702, -0.07532252, 0.01843211, 0.20906034, -0.22169475, -0.3050946, 0.005795682), target);
	target = MulAdd(f1, MF4x4(0.050782137, 0.09285482, 0.013463424, 0.09382983, 0.15679222, 0.097184785, -0.102737166, 0.010083802, 0.25101736, -0.057440706, -0.0068231933, 0.031670235, -0.15177655, 0.06184211, 0.035385065, 0.094532885), target);
	target = MulAdd(g1, MF4x4(-0.021981591, -0.010338387, 0.0173951, 0.011672829, -0.07322482, 0.026766973, 0.19942865, -0.054371774, -0.039344914, -0.031175368, -0.104145624, -0.033964705, 0.059924334, 0.10030723, 0.05287642, -0.011525114), target);
	target = MulAdd(h1, MF4x4(0.010477996, -0.027564188, -0.07299184, 0.0031628401, 0.053592954, 0.14721608, 0.050443165, 0.054701533, -0.05194661, 0.10187985, 0.0841449, -0.16591024, -0.120705724, 0.04835826, 0.022117713, 0.14320303), target);
	target = MulAdd(i1, MF4x4(0.05366802, 0.04450724, -0.07116873, 0.018092519, 0.12960574, 0.010524704, 0.021397214, -0.10124951, 0.021492062, 0.15726486, 0.018809538, 0.16718598, -0.079331905, 0.014389413, -0.043786433, -0.031617466), target);
	target = MulAdd(a2, MF4x4(0.061123163, -0.008527182, 0.056948926, -0.10627774, -0.051381204, -0.098056376, -0.07355251, 0.058251213, 0.03027771, -0.059726343, -0.004039657, -0.060454708, 0.03326807, -0.017245874, -0.018002514, -0.19221961), target);
	target = MulAdd(b2, MF4x4(0.13269426, -0.14521386, 0.07024693, -0.044345845, 0.064260505, -0.08186043, -0.018553255, 0.013000457, -0.034331907, 0.0110434955, -0.15152079, 0.062666364, 0.0064793793, 0.03943717, -0.07121982, -0.0122420695), target);
	target = MulAdd(c2, MF4x4(0.0022909308, -0.027821459, 0.007666231, -0.09402207, 0.06378703, 0.0025306912, -0.011908118, 0.052943528, 0.03777223, 0.015253876, -0.0911553, 0.020581577, 0.04024302, -0.059131015, -0.12878624, -0.14937729), target);
	target = MulAdd(d2, MF4x4(-0.20060766, 0.10550035, 0.040319964, 0.02203861, -0.21334945, -0.09129617, 0.14950722, 0.27330917, -0.13043684, -0.011455554, -0.059163526, 0.061363168, 0.07198159, -0.14392267, -0.049279723, -0.16368888), target);
	target = MulAdd(e2, MF4x4(-0.005726934, 0.061809737, 0.26571175, -0.0508786, -0.13768773, 0.0084726615, 0.064867355, 0.24021354, -0.16612366, -0.32611376, -0.0056967433, 0.058649994, -0.14098184, -0.13195637, 0.17463897, -0.072706945), target);
	target = MulAdd(f2, MF4x4(-0.004255773, 0.050221432, 0.03511493, 0.13059683, 0.090276234, -0.014923911, -0.0297545, -0.047384452, -0.017452974, -0.014603175, -0.040555496, -0.040129393, 0.15767246, -0.12933423, -0.10411603, -0.059705585), target);
	target = MulAdd(g2, MF4x4(0.01499572, 0.038021356, -0.038655262, 0.10332636, 0.06107952, -0.124987125, 0.00839781, 0.026839726, 0.05667281, -0.06502034, -0.04158296, 0.020352334, 0.012855494, -0.16884436, 0.07456417, -0.27250993), target);
	target = MulAdd(h2, MF4x4(0.16625583, 0.111739345, -0.14115168, 0.07775498, 0.07964054, -0.19943264, -0.076579675, 0.114146315, -0.06924165, -0.008523757, -0.012369684, 0.084825546, 0.077360824, 0.015640896, -0.09014757, -0.2562427), target);
	target = MulAdd(i2, MF4x4(0.043598585, -1.7944143e-05, 0.020020347, 0.163202, -0.009320151, -0.060290903, -0.08029752, 0.00470786, -0.052253775, 0.0523158, -0.048120454, 0.027237004, 0.19543527, -0.053322367, -0.07795532, -0.26097637), target);
	target = MulAdd(a3, MF4x4(0.040829513, 0.027344912, 0.039350614, -0.018052671, 0.047116775, -0.21742846, 0.021800093, 0.04727935, 0.006476431, 0.109050065, -0.15855633, 0.06528196, 0.01749025, 0.0801408, 0.050908446, 0.025161307), target);
	target = MulAdd(b3, MF4x4(0.0039109145, 0.20262106, 0.010640377, 0.00073508086, 0.035609048, -0.3178805, -0.114064306, -0.08717052, 0.041919455, 0.100822195, 0.052280337, 0.14264041, -0.019835107, -0.01742497, 0.069859706, -0.136094), target);
	target = MulAdd(c3, MF4x4(-0.016050965, 0.0017023965, 0.07463478, 0.029397288, 0.012884667, -0.15340297, -0.12145311, -0.084504604, 0.031719554, 0.10176259, 0.17917578, -0.081466235, -0.070475176, -0.036569543, 0.030817369, 0.00093004206), target);
	target = MulAdd(d3, MF4x4(0.005175143, 0.038541757, -0.04611391, 0.012687734, -0.08482585, -0.13420677, -0.022602718, -0.023248335, -0.009379305, -0.024914416, -0.1556873, 0.07716233, 0.040030897, 0.019588439, -0.00020326633, -0.035921823), target);
	target = MulAdd(e3, MF4x4(0.09277081, -0.14604849, -0.10315272, -0.10218238, -0.019299058, 0.039892927, -0.12305097, 0.08282308, 0.20785542, -0.25430942, -0.5786373, 0.08361619, 0.29766968, -0.13651149, 0.05433396, -0.002326487), target);
	target = MulAdd(f3, MF4x4(0.0022918757, -0.13288023, 0.03507073, -0.1270022, -0.08303009, -0.11835682, -0.043386355, -0.049939554, 0.17220426, 0.20690584, -0.12607607, 0.01630364, -0.12909384, -0.015639398, 0.008538845, 0.011814694), target);
	target = MulAdd(g3, MF4x4(-0.07323993, 0.0038193578, -0.04499547, -0.028330965, 0.09958232, -0.19099899, 0.11461582, 0.034137066, 0.11563113, -0.080109045, -0.046825726, -0.076518156, 0.02142076, 0.023689395, -0.06716457, 0.055380866), target);
	target = MulAdd(h3, MF4x4(-0.16992791, -0.11073775, 0.030314503, -0.040741265, 0.14471209, -0.08543357, 0.03936064, 0.08363683, 0.25784957, -0.013240934, -0.2611622, 0.058637217, -0.054403603, 0.07538569, -0.01460606, 0.0033586712), target);
	target = MulAdd(i3, MF4x4(-0.030334603, -0.06705014, 0.115312725, -0.088085726, 0.06702929, -0.0011495374, -0.034704637, 0.1343799, 0.09259208, -0.015164439, -0.07946157, -0.08280861, 0.05221832, -0.020103397, 0.07027518, -0.06577655), target);
	target = MulAdd(na1, MF4x4(-0.15953599, 0.19717984, -0.068774864, -0.013231801, -0.0049428963, 0.035260137, 0.06719697, 0.053744193, -0.0061586886, 0.12468824, 0.082771085, -0.06338266, -0.11161943, 0.020903619, -0.06662881, 0.106410764), target);
	target = MulAdd(nb1, MF4x4(-0.12648551, 0.59016633, -0.058449466, 0.05027184, -0.1268186, -0.16503315, 0.06283211, 0.15491466, -0.030275421, -0.017137839, 0.35572198, -0.20102905, -0.13933317, 0.064168975, -0.25148913, 0.19831786), target);
	target = MulAdd(nc1, MF4x4(-0.020623447, 0.10436603, 0.032505494, 0.10330747, -0.13537021, -0.12852004, 0.043470673, 0.15594596, -0.04079206, -0.006578484, 0.014639443, -0.1305668, 0.12742941, 0.035377916, -0.020666048, 0.12913902), target);
	target = MulAdd(nd1, MF4x4(-0.093957245, 0.14227086, -0.052876893, -0.017023886, 0.02895226, -0.049363572, -0.103803545, -0.020201692, -0.017122371, 0.020107223, 0.17466359, -0.045727585, 0.008829902, -0.090555556, -0.15374495, 0.038008567), target);
	target = MulAdd(ne1, MF4x4(-0.12761056, 0.28135148, 0.27574867, 0.382931, 0.37396768, 0.16042046, -0.21978071, -0.09570819, -0.03657776, -0.14994064, -0.21335132, -0.14469749, -0.008334839, 0.076127745, 0.12596962, 0.044469625), target);
	target = MulAdd(nf1, MF4x4(0.062693655, -0.0020995673, -0.03578003, -0.008693218, -0.20448913, -0.0012052114, -0.05517855, 0.07709973, 0.00019773244, -0.033441383, 0.10124644, -0.029133243, 0.011188245, 0.049480632, -0.15774047, 0.026462583), target);
	target = MulAdd(ng1, MF4x4(0.07708541, 0.032094687, -0.06590399, -0.044917103, 0.030699087, 0.013791041, -0.027715903, 0.034989886, 0.12644286, -0.053212583, 0.030144867, 0.03191328, -0.0022030976, -0.03517952, -0.031239145, -0.011541516), target);
	target = MulAdd(nh1, MF4x4(0.13605243, -0.0036643173, 0.054759923, -0.0874578, -0.095541336, -0.07717009, -0.0044404124, -0.07789377, 0.022223033, 0.042040557, 0.03963188, -0.06923746, 0.050515573, 0.021173706, -0.1588929, -0.016566718), target);
	target = MulAdd(ni1, MF4x4(0.03642868, 0.0019571134, -0.06462001, -0.025783904, -0.092446275, 0.07034372, 0.13513735, 0.049418043, 0.0469767, -0.034647983, -0.028358156, 0.029821971, -0.0012547448, -0.0215142, -0.00575001, -0.015822617), target);
	target = MulAdd(na2, MF4x4(0.05991972, -0.07097606, -0.0021673026, -0.057737365, -0.07414523, 0.0848901, -0.010813947, 0.098590545, -0.053975012, -0.01418897, -0.003842304, -0.08890115, -0.036108535, -0.028888565, 0.083571434, 0.031539794), target);
	target = MulAdd(nb2, MF4x4(0.06793972, -0.04307121, -0.06749134, -0.2220419, -0.027158843, -0.12549289, -0.12074319, 0.15725835, 0.031145409, 0.029780883, 0.1666359, -0.19247383, 0.049615867, 0.007585922, 0.043383103, 0.059999026), target);
	target = MulAdd(nc2, MF4x4(0.049211416, 0.017562263, -0.16941698, 0.020431092, 0.03291002, -0.16847964, -0.13768122, 0.023552107, 0.066443734, 0.04457845, -0.06422816, 0.026246335, -0.068408854, -0.005691881, -0.016129443, -0.04373907), target);
	target = MulAdd(nd2, MF4x4(-0.05238576, 0.0040802117, -0.048386503, -0.091417626, -0.12426567, 0.057714116, 0.13877256, 0.07984798, 0.1273961, 0.053779654, 0.005539249, -0.15763973, 0.01229652, 0.028854318, 0.03565122, 0.008969873), target);
	target = MulAdd(ne2, MF4x4(0.0557266, -0.08987834, 0.084733, -0.092816025, -0.11559604, 0.078937136, 0.2510453, 0.43310538, 0.25558868, 0.11473004, -0.38432416, -0.5493848, 0.11698362, 0.0031592897, -0.25226787, -0.16275169), target);
	target = MulAdd(nf2, MF4x4(-0.057126086, 0.02864368, 0.03450892, -0.21388105, -0.09301064, -0.08352118, -0.03985245, 0.03851764, 0.052544933, -0.11187719, 0.1202711, -0.025741827, -0.049562898, 0.030661782, -0.13272884, 0.11825087), target);
	target = MulAdd(ng2, MF4x4(0.00022974834, 0.009710421, 0.017583983, -0.033309694, -0.0051363627, -0.04150162, 0.14076383, -0.02493734, 0.03662216, 0.013816948, -0.093910635, -0.016845183, -0.005615691, 0.057093993, -0.04766084, 0.02399329), target);
	target = MulAdd(nh2, MF4x4(-0.105166085, 0.043123998, -0.0127380835, 0.002625806, 0.015331415, -0.06932662, 0.12627512, -0.007400604, 0.0795737, -0.06656376, 0.10450256, -0.21649025, 0.018006608, 0.023881756, 0.017293494, 0.028394276), target);
	target = MulAdd(ni2, MF4x4(-0.02119481, 0.08968183, 0.05052849, -0.12967895, -0.040222317, -0.05005715, -0.03269384, 0.12692185, -0.026795395, -0.010976929, 0.09932758, -0.10000184, -0.029375391, -0.0059517818, 0.11153912, -0.021110825), target);
	target = MulAdd(na3, MF4x4(-0.18823478, -0.07471848, 0.10086466, -0.0802164, -0.08827184, 0.120874256, -0.10013822, -0.041975964, 0.03392259, 0.02487604, 0.0055046408, -0.031607714, -0.046583664, -0.08023409, 0.01050265, 0.018952131), target);
	target = MulAdd(nb3, MF4x4(-0.27866688, 0.01744233, 0.22286561, -0.12082279, -0.09129484, 0.18733421, 0.13702172, 0.11011228, -0.102656946, 0.008688805, 0.017221048, 0.05698448, 0.047090173, -0.11221888, -0.011405661, -0.0803902), target);
	target = MulAdd(nc3, MF4x4(-0.015040312, -0.06936747, -0.051856115, -0.23413056, 0.038837086, -0.05748699, 0.008432868, 0.013003123, 0.015453204, -0.025663814, -0.14024237, 0.05792928, 0.16071676, -0.06444115, -0.025555203, -0.0329603), target);
	target = MulAdd(nd3, MF4x4(-0.17098702, -0.03307113, 0.39276683, -0.2675735, 0.11513026, 0.022623973, 0.09215052, -0.035489403, 0.15498714, -0.033512514, -0.12328384, 0.06450136, -0.0857012, -0.05533978, 0.084712565, 0.060517173), target);
	target = MulAdd(ne3, MF4x4(-0.22476391, 0.043400906, 0.27170894, -0.08536195, 0.081583224, -0.12228048, 0.11090993, -0.17015494, -0.2305381, 0.3388885, 0.04737424, -0.039380115, -0.4384285, 0.108392686, -0.04265109, -0.076380804), target);
	target = MulAdd(nf3, MF4x4(-0.005365885, 0.019079542, 0.101035826, 0.019317945, 0.090604626, 0.060402036, 0.03897374, -0.013627864, -0.06286203, -0.10721233, -0.04124434, 0.15492818, 0.08468363, 0.02096242, 0.16306227, -0.121712595), target);
	target = MulAdd(ng3, MF4x4(0.076783404, -0.10820704, 0.1928273, -0.26549062, -0.019718567, 0.014522923, 0.03307578, 0.05146496, -0.037891667, 0.06871848, -0.040733065, -0.06625803, 0.044294454, -0.03430605, 0.17273937, -0.097373515), target);
	target = MulAdd(nh3, MF4x4(-0.01684758, 0.11004352, 0.18195264, 0.021141363, -0.06384991, -0.046188932, 0.14583582, -0.042456772, -0.19739406, 0.0716079, -0.14497757, -0.11471601, -0.05790205, -0.031198889, 0.16930245, -0.050601408), target);
	target = MulAdd(ni3, MF4x4(-0.0004969313, 0.052198816, 0.044516873, -0.0004902391, -0.01417575, 0.007150018, -0.058823355, -0.10758816, 0.11552376, -0.009542674, -0.02952017, 0.057716407, 0.036378585, -0.014639986, -0.102228165, 0.014733783), target);
	conv2d_3_tf1[gxy] = target;

	target = MF4(0.05188569, -0.059999112, -0.083425395, 0.082997724);
	target = MulAdd(a1, MF4x4(0.030038383, -0.021750828, -0.05673787, -0.020782128, -0.09773039, 0.039174426, 0.06708796, -0.049333632, -0.04537355, 0.0038014427, 0.03591195, -0.044637557, 0.050968885, 0.09330693, -0.031212635, 0.07429358), target);
	target = MulAdd(b1, MF4x4(0.12775251, 0.040986136, -0.04009791, -0.46938616, -0.019962156, 0.020210423, 0.006611632, -0.12218599, -0.034447394, -0.042804014, 0.03643364, 0.008767333, 0.011725782, 0.12548617, -0.04463093, -0.0003086673), target);
	target = MulAdd(c1, MF4x4(-0.17495006, 0.09364223, 0.21191445, 0.3689361, -0.17039227, 0.046119362, 0.0004103469, 0.005220074, -0.030711368, -0.16689484, -0.0033276859, 0.0019133807, 0.039146427, 0.24162926, -0.06682649, 0.015280382), target);
	target = MulAdd(d1, MF4x4(0.14416052, -0.04350349, -0.05997498, -0.033882197, 0.094997644, -0.074338906, -0.018996352, -0.11358834, -0.056317985, -0.09744033, -0.0649357, 0.13987495, -0.11759386, 0.04025934, 0.014363531, 0.04545393), target);
	target = MulAdd(e1, MF4x4(-0.025082601, 0.15925029, 0.26535234, -0.11123376, 0.2440576, -0.22252248, -0.33604595, 0.41823947, 0.041226815, -0.018212054, 0.029909294, -0.18397939, -0.008992709, -0.053265553, -0.33006796, 0.1679767), target);
	target = MulAdd(f1, MF4x4(-0.15396369, 0.047922403, 0.081095986, 0.113559745, -0.15644477, -0.053599257, 0.13369486, -0.042834673, 0.053572267, 0.008784489, -0.07328086, -0.09134024, 0.13616152, 0.07166517, -0.13828607, 0.03351486), target);
	target = MulAdd(g1, MF4x4(0.14226072, 0.03835179, 0.037692476, 0.028272923, 0.1739552, 0.060204353, 0.025946103, -0.11801499, -0.013297981, 0.017026937, 0.03560745, 0.013458226, -0.13805607, -0.0465596, -0.10789218, 0.05573865), target);
	target = MulAdd(h1, MF4x4(0.086809635, -0.079763696, 0.09985947, -0.005514354, 0.03096031, -0.11669026, -0.022280462, -0.13622472, -0.14020382, -0.19116089, -0.19539164, 0.19047521, 0.052646037, 0.16117837, -0.03884808, 0.00616069), target);
	target = MulAdd(i1, MF4x4(0.0559758, 0.034724902, 0.0734068, 0.05364228, 0.038033064, -0.17287946, 0.079264306, -0.108767435, 0.061889466, 0.008698587, -0.09496613, 0.005716793, 0.016187228, 0.029243872, 0.0018449439, -0.049501143), target);
	target = MulAdd(a2, MF4x4(-0.07022979, -0.048978336, -0.03554127, 0.059115365, -0.044639688, 0.09438233, -0.08497962, 0.0090867905, 0.10578026, -0.05330054, -0.096712135, -0.066838026, -0.14796714, -0.068573944, -0.062214892, -0.041214455), target);
	target = MulAdd(b2, MF4x4(0.1073234, -0.18741827, -0.11151789, 0.015686441, -0.051570714, 0.11938432, -0.10913929, 0.19924664, 0.004670323, 0.12700799, 0.10854721, 0.011548006, 0.027806178, -0.056173198, -0.0735823, -0.032703802), target);
	target = MulAdd(c2, MF4x4(0.021739235, -0.0762548, -0.07841973, -0.026117647, -0.020196462, -0.032511126, -0.013573442, -0.0064681806, -0.001557182, -0.025993003, 0.042057555, -0.07787966, -0.0032753355, -0.20890261, -0.11667297, 0.014360282), target);
	target = MulAdd(d2, MF4x4(0.112155125, 0.08103959, -0.16235179, -0.044133063, -0.22261354, 0.08284279, 0.18919945, -0.12323681, 0.07951254, 0.07377466, 0.040439017, -0.085686415, -0.05438964, -0.0856376, -0.03426205, 0.16813913), target);
	target = MulAdd(e2, MF4x4(-0.07694995, -0.14575966, 0.16244434, 0.069700025, -0.09374663, 0.20785992, 0.6321536, -0.14662765, 0.049012557, -0.11849355, -0.17823172, 0.12648977, 0.23761982, -0.27029783, -0.25868917, 0.3413623), target);
	target = MulAdd(f2, MF4x4(-0.054794446, -0.07828729, -0.09556604, -0.07134157, 0.036704887, -0.10364276, 0.06125657, 0.09165867, 0.118566066, -0.049238298, -0.047849175, -0.111805685, -0.12598202, -0.059178207, 0.19201007, 0.23574536), target);
	target = MulAdd(g2, MF4x4(0.08980732, 0.02026105, 0.0129340505, -0.09411272, 0.050741844, 0.08491761, -0.0047545866, 0.08226705, -0.043336462, -0.031396918, 0.067547105, 0.062342398, -0.17352124, 0.023412999, -0.040013775, 0.1298339), target);
	target = MulAdd(h2, MF4x4(-0.14172035, -0.24607244, 0.047379315, 0.07706968, 0.021247461, -0.052120127, -0.059468146, 0.119869955, 0.053620726, 0.004084994, 0.13461955, -0.18420613, -0.08815453, -0.2254551, -0.12617877, 0.08785496), target);
	target = MulAdd(i2, MF4x4(-0.077065945, -0.2423904, 0.1552825, -0.03647555, 0.06480191, 0.1330156, -0.0269433, 0.15451622, 0.035751514, 0.20464808, -0.025265023, 0.020420134, 0.083485104, -0.21048307, 0.02272924, 0.08510558), target);
	target = MulAdd(a3, MF4x4(0.060760673, 0.09824782, -0.021633951, -0.01997114, -0.057572138, -0.09888247, 0.028583184, -0.07609289, -0.15944918, -0.068560906, 0.0012401744, -0.1439598, 0.062566355, 0.038748585, -0.049428593, 0.06488477), target);
	target = MulAdd(b3, MF4x4(-0.14030106, 0.3072454, 0.06573317, 0.11125419, -0.056651082, -0.38036165, 0.14607264, 0.025300123, -0.21910849, 0.086184375, -0.07718454, -0.22798067, 0.06774617, -0.030094463, -0.061885186, 0.17065558), target);
	target = MulAdd(c3, MF4x4(-0.010125824, 0.103072144, 0.1279997, 0.050760243, -0.044088285, -0.22203995, 0.14531416, 0.14237681, -0.09475585, -0.031036694, -0.06487942, -0.06685459, 0.044411752, 0.102043316, -0.02298463, 0.13894531), target);
	target = MulAdd(d3, MF4x4(0.078136265, 0.09181613, -0.0738238, 0.11729893, -0.0353268, -0.045860678, 0.015761107, -0.2393765, 0.16983439, -0.19721702, -0.04424538, -0.19921613, -0.15987086, -0.053151198, -0.021123309, 0.017046373), target);
	target = MulAdd(e3, MF4x4(0.12818108, 0.110156946, -0.312964, -0.039435193, -0.013887782, 0.023616536, -0.10395611, -0.10312674, 0.16714245, -0.011764259, 0.013490144, -0.27647623, 0.2815708, -0.077260576, -0.48344976, 0.45566863), target);
	target = MulAdd(f3, MF4x4(0.13948695, 0.16520035, -0.10736998, 0.11894474, 0.04268327, -0.06891544, -0.12176657, -0.010123764, -0.12706108, -0.09380579, 0.20031494, 0.013033486, 0.045285974, 0.24856701, 0.017390171, 0.008171071), target);
	target = MulAdd(g3, MF4x4(0.10275033, 0.044178646, -0.07312131, 0.032645803, 0.06477659, -0.23516645, 0.067890026, -0.10182108, -0.06428725, -0.30921656, 0.0689789, -0.12003374, -0.0762646, -0.054030195, -0.032199256, -0.01721715), target);
	target = MulAdd(h3, MF4x4(0.030139906, 0.34553978, -0.10791494, 0.10865321, -0.027569076, -0.3618259, 0.08197652, -0.18512005, -0.052365016, -0.2031043, 0.022174975, 0.112072885, -0.010841792, -0.056213304, -0.01889174, -0.021815313), target);
	target = MulAdd(i3, MF4x4(0.07941464, 0.10613619, -0.17120236, 0.11736614, -0.067713745, -0.04955237, 0.07884793, 0.028317591, -0.08577812, -0.23818578, 0.028565563, -0.09763123, 0.021688502, -0.014520022, -0.0022332326, 0.06084232), target);
	target = MulAdd(na1, MF4x4(0.17416538, -0.055337753, -0.086784735, -0.19203298, -0.022859348, 0.052769832, 0.01801499, 0.021157248, -0.003430855, 0.28804642, -0.12915777, -0.007967927, -0.062051505, -0.035990898, 0.14486398, -0.045551952), target);
	target = MulAdd(nb1, MF4x4(-0.06697477, 0.21398899, 0.15626886, 0.09518566, -0.04784873, -0.043016933, 0.028028524, -0.2202801, 0.009475978, 0.023302117, 0.086636774, 0.08466187, 0.027134296, -0.12477319, -0.0066038263, -0.13377169), target);
	target = MulAdd(nc1, MF4x4(0.073002495, 0.019882409, 0.13465437, 0.095742665, 0.02877812, -0.07978304, 0.04799434, -0.08633761, 0.053829532, 0.028266488, 0.016496865, -0.017649772, 0.007504453, -0.08132136, -0.032084428, -0.06213031), target);
	target = MulAdd(nd1, MF4x4(0.22638816, 0.021791125, -0.05373062, -0.11881955, -0.16027248, 0.1248117, 0.09711232, 0.12850693, 0.1430744, 0.016074827, 0.28289175, -0.02841633, -0.071616, 0.123623274, 0.034697633, -0.04540337), target);
	target = MulAdd(ne1, MF4x4(-0.32847854, 0.03362345, 0.1570183, -0.03396035, 0.010754796, 0.050622255, 0.1397359, -0.0694123, -0.08154277, 0.07327178, -0.19398023, 0.19549695, 0.016365696, -0.094511, 0.1962987, -0.1624034), target);
	target = MulAdd(nf1, MF4x4(0.058889385, -7.546345e-05, 0.24408817, 0.2477949, -0.09436003, 0.012569106, -0.008978321, -0.24843621, -0.05341815, 0.042606987, -0.034251466, -0.032898013, 0.024249421, -0.13529354, -0.009598037, -0.010006772), target);
	target = MulAdd(ng1, MF4x4(-0.008468843, -0.096458435, -0.03669067, 0.07894181, -0.05088269, -0.02165748, -0.092161335, 0.027510274, -0.063793465, -0.016722348, 0.04017869, -0.08391233, -0.02473415, -0.002307846, -0.050660677, 0.13024652), target);
	target = MulAdd(nh1, MF4x4(0.106820665, -0.079599075, 0.119992964, 0.052486505, -0.13353048, 0.17465922, -0.06353679, 0.08188179, -0.06733727, -0.076294705, 0.06284326, 0.03576611, -0.07740004, -0.022198483, -0.02510401, 0.013377264), target);
	target = MulAdd(ni1, MF4x4(0.05380906, -0.13063669, 0.0502729, 0.08910364, -0.063234136, 0.12828088, -0.018460963, -0.075440355, 0.009794487, -0.06512296, -0.06974687, 0.055644996, -0.06760934, -0.051190425, 0.015056534, -0.076578766), target);
	target = MulAdd(na2, MF4x4(0.11306755, -0.14152966, 0.017199567, -0.07927823, -0.07652898, 0.049704805, 0.08694966, 0.023250965, -0.0097414795, 0.18923178, -0.009095949, 0.19534774, 0.07291539, 0.08211279, -0.03250076, -0.004571515), target);
	target = MulAdd(nb2, MF4x4(0.054340266, -0.06225541, 0.079742216, 0.08922402, 0.038130082, 0.03440285, -0.09214123, -0.079534784, -0.056612004, -0.11120479, -0.022306368, -0.12771012, -0.03189213, -0.06106299, 0.07653171, -0.017988201), target);
	target = MulAdd(nc2, MF4x4(-0.01483085, -0.07492041, 0.09557763, 0.018514846, -0.063029274, -0.0042385045, 0.095838405, 0.25916252, 0.007743448, -0.03838592, -0.0017389939, -0.21538797, 0.030113945, 0.052143387, 0.042328425, -0.021920057), target);
	target = MulAdd(nd2, MF4x4(-0.054446265, -0.15103836, 0.0337641, -0.17766273, 0.59812796, 0.16621551, -0.1396398, -0.10765044, -0.20137207, -0.058399063, 0.015214646, 0.08948676, 0.10885861, -0.07048783, -0.036039792, -0.0139106875), target);
	target = MulAdd(ne2, MF4x4(0.44016132, -0.15730812, -0.18961212, 0.054028135, 0.20437379, 0.22306874, -0.16968171, -0.3039991, 0.16289267, -0.13677506, 0.393345, 0.14750478, 0.030973857, -0.15711813, 0.29814583, -0.079453215), target);
	target = MulAdd(nf2, MF4x4(0.111330524, 0.034477763, -0.035662375, 0.0040829857, -0.21120815, -0.0015638896, 0.16000211, 0.11780304, 0.117233016, 0.027888954, -0.11743133, -0.10117133, 0.09182776, -0.15051128, -0.050599564, -0.07859627), target);
	target = MulAdd(ng2, MF4x4(-0.07528831, 0.07377095, -0.012035711, 0.14641845, 0.19885515, -0.027350847, 0.15891771, -0.032186788, -0.18568198, 0.08516914, 0.0194725, 0.113679186, -0.07321446, -0.006814611, 0.024363022, -0.041401975), target);
	target = MulAdd(nh2, MF4x4(0.03670741, -0.05319249, 0.051785614, -0.16903248, 0.17325033, 0.1144905, 0.20689905, -0.018909017, 0.05619651, -0.01838476, -0.18826057, 0.04974103, -0.048423767, -0.038877293, -0.07345023, 0.112472065), target);
	target = MulAdd(ni2, MF4x4(0.010864774, 0.16668274, 0.068780385, 0.08308156, -0.034339216, 0.011294274, 0.14058082, -0.13272302, -0.049348705, -0.043334674, -0.055829912, -0.08535909, 0.0064629056, 0.023997806, -0.016735112, -0.011942476), target);
	target = MulAdd(na3, MF4x4(0.086142346, 0.2292178, -0.010219403, 0.0593476, -0.083634034, 0.12259535, -0.07327748, 0.024673425, -0.045079265, -0.02530776, 0.02248951, 0.008393773, 0.077611506, -0.11509985, 0.059175193, -0.042087976), target);
	target = MulAdd(nb3, MF4x4(0.04044624, 0.26444176, 0.01946967, 0.11972864, -0.17220415, 0.2603537, -0.14230311, -0.12086888, -0.0016741497, -0.15089966, 0.024180984, -0.15758742, 0.008668386, 0.031713035, 0.005303394, 0.12022453), target);
	target = MulAdd(nc3, MF4x4(-0.010897276, 0.11987153, -0.13000685, 0.19799784, 0.078611284, -0.03090101, -0.053625334, -0.004184015, 0.010114269, -0.116182365, 0.0914601, 0.018809833, -0.06429345, -0.038116198, 0.07993482, 0.1780351), target);
	target = MulAdd(nd3, MF4x4(0.31573543, 0.27823564, -0.044864718, -0.06798315, -0.028597904, -0.12924606, 0.011233994, 0.014880406, -0.2519176, -0.013868341, 0.079987615, 0.24702698, 0.18798052, 0.12141515, -0.07526576, -0.09506396), target);
	target = MulAdd(ne3, MF4x4(-0.11081675, 0.8964764, 0.23946989, 0.2148404, 0.021539357, -0.28177392, 0.11052179, -0.20627522, -0.17099018, -0.18601313, -0.14564027, -0.009660313, -0.074333444, 0.16385522, 0.2510857, -0.18929671), target);
	target = MulAdd(nf3, MF4x4(-0.099951014, 0.15615578, 0.0872118, 0.085872896, -0.050993633, -0.034744546, 0.11654366, 0.099523395, -0.026343498, -0.06509954, -0.036859628, -0.064830914, -0.04815342, -0.045304768, 0.09685562, 0.034938518), target);
	target = MulAdd(ng3, MF4x4(0.38825148, 0.22435588, -0.038768243, 0.12891662, -0.020507365, 0.02433332, 0.10165365, -0.06321467, -0.27405342, 0.21058224, -0.056151077, 0.0893715, 0.2074139, 0.075082846, 0.05353601, 0.07657649), target);
	target = MulAdd(nh3, MF4x4(0.1015844, 0.17984828, 0.09339243, 0.03871665, 0.0317625, 0.09201323, 0.025318913, -0.14218892, -0.0707927, -0.08178308, 0.027679168, -0.0876631, 0.10087377, 0.120364726, 0.04277295, -0.045731667), target);
	target = MulAdd(ni3, MF4x4(0.028319372, -0.071746595, 0.06251333, -0.01576269, -0.010277642, 0.0071051405, 0.05409803, -0.031315167, -0.029280229, 0.062258944, 0.011841519, -0.035734437, -0.04741583, -0.03989569, 0.09797028, 0.015404385), target);
	conv2d_3_tf2[gxy] = target;
}

//!PASS 5
//!DESC Conv-4x3x3x24
//!IN conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2
//!OUT conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2
//!BLOCK_SIZE 8
//!NUM_THREADS 64

void Pass5(uint2 blockStart, uint3 threadId) {
	uint2 gxy = Rmp8x8(threadId.x) + blockStart;
	uint2 inputSize = GetInputSize();
	if (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {
		return;
	}

	float2 inputPt = GetInputPt();
	float2 pos = (gxy + 0.5f) * inputPt;

	// [ a, d, g ]
	// [ b, e, h ]
	// [ c, f, i ]
	MF4 a1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e1 = conv2d_3_tf.SampleLevel(sam, pos, 0);
	MF4 f1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na1 = max(-a1, 0);
	MF4 nb1 = max(-b1, 0);
	MF4 nc1 = max(-c1, 0);
	MF4 nd1 = max(-d1, 0);
	MF4 ne1 = max(-e1, 0);
	MF4 nf1 = max(-f1, 0);
	MF4 ng1 = max(-g1, 0);
	MF4 nh1 = max(-h1, 0);
	MF4 ni1 = max(-i1, 0);

	a1 = max(a1, 0);
	b1 = max(b1, 0);
	c1 = max(c1, 0);
	d1 = max(d1, 0);
	e1 = max(e1, 0);
	f1 = max(f1, 0);
	g1 = max(g1, 0);
	h1 = max(h1, 0);
	i1 = max(i1, 0);

	MF4 a2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e2 = conv2d_3_tf1.SampleLevel(sam, pos, 0);
	MF4 f2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na2 = max(-a2, 0);
	MF4 nb2 = max(-b2, 0);
	MF4 nc2 = max(-c2, 0);
	MF4 nd2 = max(-d2, 0);
	MF4 ne2 = max(-e2, 0);
	MF4 nf2 = max(-f2, 0);
	MF4 ng2 = max(-g2, 0);
	MF4 nh2 = max(-h2, 0);
	MF4 ni2 = max(-i2, 0);

	a2 = max(a2, 0);
	b2 = max(b2, 0);
	c2 = max(c2, 0);
	d2 = max(d2, 0);
	e2 = max(e2, 0);
	f2 = max(f2, 0);
	g2 = max(g2, 0);
	h2 = max(h2, 0);
	i2 = max(i2, 0);

	MF4 a3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e3 = conv2d_3_tf2.SampleLevel(sam, pos, 0);
	MF4 f3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na3 = max(-a3, 0);
	MF4 nb3 = max(-b3, 0);
	MF4 nc3 = max(-c3, 0);
	MF4 nd3 = max(-d3, 0);
	MF4 ne3 = max(-e3, 0);
	MF4 nf3 = max(-f3, 0);
	MF4 ng3 = max(-g3, 0);
	MF4 nh3 = max(-h3, 0);
	MF4 ni3 = max(-i3, 0);

	a3 = max(a3, 0);
	b3 = max(b3, 0);
	c3 = max(c3, 0);
	d3 = max(d3, 0);
	e3 = max(e3, 0);
	f3 = max(f3, 0);
	g3 = max(g3, 0);
	h3 = max(h3, 0);
	i3 = max(i3, 0);

	MF4 target = MF4(0.059486926, -0.04431698, 0.13264082, 0.054302923);
	target = MulAdd(a1, MF4x4(0.24241452, -0.100528784, 0.084611595, -0.08080715, -0.080256924, 0.32367775, -0.08305123, 0.14469719, -0.12750244, 0.011761777, -0.032910027, -0.09281193, -0.08873951, -0.048546325, 0.074183516, 0.045072023), target);
	target = MulAdd(b1, MF4x4(0.010939742, 0.098544136, 0.049292147, -0.22430013, -0.08015333, -0.031508088, -0.36106005, 0.12460627, 6.643176e-05, 0.018857447, 0.031020487, 0.12757821, -0.19238578, 0.30933842, -0.0045448663, 0.06171628), target);
	target = MulAdd(c1, MF4x4(-0.108574405, 0.09914063, -0.041833777, -0.039154854, 0.23846108, -0.1906441, -0.039134666, -0.25513512, -0.0050513004, 0.01407854, -0.022056133, -0.1184478, 0.066072665, 0.0785561, -0.020216426, -0.18292157), target);
	target = MulAdd(d1, MF4x4(0.12959838, 0.026440006, -0.0011596913, -0.31726244, -0.07676252, 0.027959237, 0.05895619, 0.12172022, -0.024327997, 0.21279183, 0.13060385, 0.13505119, -0.031498447, 0.16705142, 0.09434212, -0.023264466), target);
	target = MulAdd(e1, MF4x4(0.03360758, 0.31829336, 0.097372435, 0.066172324, -0.0873371, -0.07164736, -0.116273776, -0.15921108, -0.024977256, -0.11765985, -0.049553525, -0.032468632, -0.44380078, -0.08507502, 0.0327261, 0.019686563), target);
	target = MulAdd(f1, MF4x4(-0.25682133, 0.22201401, -0.18396896, -0.2420858, -0.09842399, 0.055608753, 0.25748596, 0.23556975, 0.026250778, 0.040285446, -0.07382262, 0.046680715, 0.18008539, -0.09701798, 0.19753018, -0.1137251), target);
	target = MulAdd(g1, MF4x4(0.11319255, -0.03126501, 0.07208281, 0.07807037, 0.004573684, -0.06784475, 0.1179848, 0.020895153, -0.06185304, 0.14311057, 0.046281323, 0.008271052, 0.026759004, 0.08469016, 0.028041905, -0.03963556), target);
	target = MulAdd(h1, MF4x4(-0.07507896, -0.11879082, -0.10246563, 0.035149485, -0.06570499, 0.1419997, 0.12152748, -0.12301691, 0.1762615, -0.23543337, -0.02367177, 0.09385406, -0.09039412, -0.009186869, 0.14061865, 0.034911305), target);
	target = MulAdd(i1, MF4x4(-0.090208784, 0.032296423, -0.027498133, -0.20286347, -0.23917037, 0.121174216, -0.17504627, -0.07068821, -0.023061762, 0.19171213, 0.08966504, 0.026315464, -0.01362642, -0.06647785, 0.013971816, 0.0012104128), target);
	target = MulAdd(a2, MF4x4(-0.161861, 0.014416416, -0.15422133, -0.038345456, -0.01926263, 0.05678733, -0.08679306, 0.12459709, 0.09292243, 0.086677715, 0.02556416, 0.00951428, 0.044389777, -0.098340936, -0.0022571671, -0.11948745), target);
	target = MulAdd(b2, MF4x4(-0.03355483, 0.18284513, -0.40516412, -0.08310888, 0.072258465, -0.031982094, -0.08194034, -0.20847136, 0.053745344, 0.14951777, -0.09529998, -0.02916081, 0.3393585, -0.05936077, -0.052002147, -0.09378778), target);
	target = MulAdd(c2, MF4x4(0.022535978, -0.013279629, -0.18767136, -0.1950165, -0.08899123, 0.06262896, -0.03814574, 0.06236617, 0.020036899, 0.11593139, -0.07205022, -0.07774045, -0.03650935, 0.123902336, -0.013660339, 0.0100182695), target);
	target = MulAdd(d2, MF4x4(0.41049683, -0.13173875, 0.30123588, -0.114987805, -0.032382715, 0.010663058, -0.160782, 0.080483064, -0.15371633, -0.13527736, -0.007258104, 0.038761474, 0.13176364, 0.03947656, 0.19999593, 0.017623467), target);
	target = MulAdd(e2, MF4x4(-0.36690325, -0.11513609, -0.07545344, -0.48683265, -0.06626628, -0.1879703, -0.26255432, -0.27202544, 0.23177272, 0.22095495, -0.48685974, -0.15628079, 0.034569174, 0.11856782, 0.09302504, 0.058153495), target);
	target = MulAdd(f2, MF4x4(-0.11159616, 0.3598168, -0.040168233, -0.017913736, 0.05656028, 0.080021836, -0.0057910853, 0.09907919, -0.018118931, 0.104529314, -0.06623353, -0.05187142, 0.042655, -0.06037208, -0.13814276, -0.13877125), target);
	target = MulAdd(g2, MF4x4(0.07689434, -0.02957611, 0.059183944, 0.18732947, -0.012570976, -0.050425645, -0.04667911, -0.01714018, -0.1811952, -0.10611838, -0.06517356, 0.042284686, 0.14040054, -0.0044124937, 0.088569656, -0.09631004), target);
	target = MulAdd(h2, MF4x4(-0.041964065, -0.03648969, -0.06585285, -0.14997002, 0.14896095, 0.10991836, 0.035850056, -0.20629084, 0.20721185, 0.009481607, 0.059676703, 0.029152349, 0.048996776, 0.013181292, 0.012264018, 0.11202655), target);
	target = MulAdd(i2, MF4x4(-0.0025412547, 0.17166725, -0.029921697, -0.095596656, -0.01471627, -0.073273055, -0.07374642, 0.12182166, -0.032026254, 0.026899092, 0.010827608, 0.025221692, -0.023959257, 0.029916659, -0.082857594, -0.08647804), target);
	target = MulAdd(a3, MF4x4(0.0033231457, 0.025150223, -0.03726759, 0.00018312124, 0.07642118, 0.014045985, 0.12287268, -0.004507867, 0.020656586, -0.047215212, 0.06898793, -0.07950119, -0.012468573, -0.048340544, -0.018446337, 0.027170202), target);
	target = MulAdd(b3, MF4x4(0.10788957, -0.12736209, -0.013289646, -0.022522524, 0.021718934, 0.020739023, -0.036677744, -0.020026676, 0.02461253, -0.092075236, 0.020083528, 0.082641564, 0.075953014, -0.27012607, 0.008537513, -0.014810857), target);
	target = MulAdd(c3, MF4x4(-0.08193019, 0.12357896, -0.06672417, -0.0010150888, 0.04195979, 0.0720302, -0.04809725, 0.055789728, 0.029061116, 0.10846966, -0.04579666, -0.01037483, 0.12933455, -0.053652834, 0.016493477, -0.0990554), target);
	target = MulAdd(d3, MF4x4(-0.09004879, -0.07116469, -0.06171522, 0.03694901, 0.13067593, 0.014719711, 0.120604895, -0.16505042, -0.13472416, 0.21027507, -0.022027668, 0.07578348, 0.14807276, -0.08320662, 0.0676947, 0.015872132), target);
	target = MulAdd(e3, MF4x4(-0.013147318, -0.13990307, 0.1424338, 0.115681306, -0.096111625, -0.044169232, 0.11619919, -0.12927286, 0.2216329, -0.3785249, 0.11881006, 0.05548364, 0.042547792, 0.01991183, 0.18072614, -0.12253586), target);
	target = MulAdd(f3, MF4x4(0.00507553, 0.06520682, -0.046696853, 0.09873781, -0.007926131, -0.046024855, 0.007177778, 0.067222506, 0.061948813, -0.049535032, -0.12687485, -0.07812312, 0.10864703, -0.005380493, -0.015591806, -0.12866366), target);
	target = MulAdd(g3, MF4x4(0.019687995, -0.08136337, -0.023699999, -0.0323895, 0.12587894, 0.08024744, 0.08909513, -0.0005001073, -0.11161824, -0.016753444, 0.044748716, -0.11397051, 0.06295226, -0.0628124, 0.009678967, -0.1027119), target);
	target = MulAdd(h3, MF4x4(-0.032145683, -0.008628118, -0.06487987, -0.010637064, -0.09447084, -0.20124236, -0.122117415, -0.12410895, 0.10209157, 0.068115994, 0.19661677, 0.043781675, 0.11948784, 0.15049894, 0.021160888, -0.21148479), target);
	target = MulAdd(i3, MF4x4(-0.0033451298, 0.062234465, -0.03359657, 0.077990666, -0.011020787, 0.050606657, -0.11445393, -0.057500027, -0.10895705, -0.05061424, -0.0075792223, 0.0826572, 0.03529453, -0.04615097, -0.049622457, -0.02728514), target);
	target = MulAdd(na1, MF4x4(-0.047170192, -0.063528895, 0.02639375, 0.06133726, 0.07981049, 0.034422956, -0.13669443, -0.027895411, -0.010747354, -0.0295917, 0.023415035, 0.104463466, -0.011863274, 0.12199949, -0.056722328, -0.0074905828), target);
	target = MulAdd(nb1, MF4x4(-0.16876027, 0.042861532, -0.042729948, 0.13059488, -0.009925716, -0.16374534, 0.1027359, -0.0023175783, -0.08118241, -0.18233776, 0.003640569, -0.04086481, -0.07530675, 0.046155393, -0.09668895, -0.040498324), target);
	target = MulAdd(nc1, MF4x4(0.0208792, -0.041296285, 0.06495765, -0.014825306, -0.09760564, 0.143414, -0.013952, 0.012976426, 0.07446454, -0.069237985, -0.002300383, 0.039793592, 0.10446527, -0.15101886, 0.041385327, 0.045380514), target);
	target = MulAdd(nd1, MF4x4(-0.12573302, 0.26293075, 0.021182856, 0.02212639, -0.00491492, -0.09508161, -0.17054123, 0.0334656, -0.14494689, -0.13223654, -0.16647294, -0.20494382, 0.035838082, -0.02903287, -0.07826274, 0.10065476), target);
	target = MulAdd(ne1, MF4x4(-0.19727297, -0.2761233, 0.052405518, 0.060891774, 0.35287574, -0.112983346, -0.1780347, 0.29627487, 0.15366785, -0.0058370745, -0.12529264, 0.290549, -0.0019844156, 0.10950049, -0.11683605, -0.31868842), target);
	target = MulAdd(nf1, MF4x4(-0.065610245, 0.11033488, 0.0847139, 0.08285523, 0.12131332, 0.03140868, 0.019243333, -0.023314001, 0.12372892, -0.048462555, 0.07601431, -0.21340725, 0.094367005, -0.17915425, -0.16658746, -0.113485895), target);
	target = MulAdd(ng1, MF4x4(0.033004273, -0.070222795, -0.22679015, -0.11107499, -0.02167688, 0.039476246, 0.023125345, -0.06782998, 0.039133113, -0.093893945, -0.0107462, 0.013814576, -0.050011426, 0.04277595, -0.011378756, 0.0350182), target);
	target = MulAdd(nh1, MF4x4(-0.086395636, 0.2250359, 0.0071665626, -0.14477696, 0.08346748, -0.104350545, 0.066446565, 0.07878673, -0.09608493, 0.034221467, 0.056161933, 0.1631777, -0.04652218, -0.16019695, -0.14100033, 0.0012826526), target);
	target = MulAdd(ni1, MF4x4(0.010050049, 0.069934174, -0.019675957, -0.08841736, -0.084199436, 0.038151644, 0.08524713, -0.010469705, 0.08203982, -0.16461739, 0.0085432455, -0.018949067, -0.03917674, -0.06079645, -0.08174396, -0.06611958), target);
	target = MulAdd(na2, MF4x4(-0.11630934, 0.06403295, -0.015545311, 0.04184985, -0.010742663, 0.09900252, 0.16177145, -0.08190314, 0.026068239, -0.11228535, 0.07040219, 0.026017435, 0.027691854, 0.05901074, 0.063722596, 0.061167255), target);
	target = MulAdd(nb2, MF4x4(-0.079639085, -0.073422454, 0.022079231, 0.099202864, -0.0395308, -0.22311744, 0.2558813, 0.1212435, 0.015039178, 0.22544971, 0.18809341, 0.023819689, 0.031049373, 0.14752339, 0.021717936, -0.07462568), target);
	target = MulAdd(nc2, MF4x4(-0.04292503, -0.049489103, 0.005655617, -0.072831966, -0.13834368, 0.096430235, 0.11431599, 0.034313705, -0.081960544, -0.05398357, 0.17004605, 0.018943321, -0.057367492, 0.109905675, 0.03622088, 0.10881282), target);
	target = MulAdd(nd2, MF4x4(-0.10108816, 0.022445837, -0.16971505, 0.15245505, -0.049302544, -0.038824387, 0.1386521, -0.02240345, 0.08463246, 0.03382031, 0.029146284, -0.022780763, -0.10378809, 0.12192778, -0.10930472, -0.13424326), target);
	target = MulAdd(ne2, MF4x4(0.011400255, 0.1136756, -0.12854446, -0.02158332, 0.041146938, 0.23310283, 0.20242867, 0.13700607, 0.06842123, -0.2627286, 0.15257023, 0.109742284, -0.06880218, -0.12513116, 0.36323714, -0.08309059), target);
	target = MulAdd(nf2, MF4x4(-0.06563699, -0.19518705, -0.16528322, 0.0077345036, 0.07426379, 0.01273623, -0.02538561, -0.13874102, -0.17633066, -0.011773621, 0.11594737, 0.036010545, -0.100552164, 0.17657241, 0.008071872, 0.15612179), target);
	target = MulAdd(ng2, MF4x4(-0.092973836, 0.082076035, -0.10813946, 0.020986248, -0.0980453, 0.088257805, 0.12294689, 0.06353175, -0.0555235, -0.07203055, 0.0012230835, 0.031788144, 0.09232316, 0.07080032, -0.13878204, 0.1324983), target);
	target = MulAdd(nh2, MF4x4(-0.09405708, 0.08027049, -0.029044298, 0.004413014, -0.031831603, -0.10639057, 0.22791572, 0.29128549, -0.019287571, -0.07344137, -0.06703681, 0.06482271, -0.16929443, 0.18714571, 0.0076980256, -0.3553443), target);
	target = MulAdd(ni2, MF4x4(-0.08177233, -0.03985184, -0.05898491, -0.084218055, 0.13517176, -0.064535744, 0.023212295, -0.104104936, 0.06286191, -0.0183956, -0.014526215, 0.022721317, 0.13015802, -0.012955069, 0.04760935, -0.024741875), target);
	target = MulAdd(na3, MF4x4(-0.11811978, -0.258122, -0.0524529, 0.013679023, 0.3381383, -0.15303107, 0.15624695, -0.041717052, -0.09521123, -0.02555037, -0.055241242, 0.1292656, -0.053962484, 0.061827328, 0.007066458, -0.030455371), target);
	target = MulAdd(nb3, MF4x4(0.011406645, 0.03625852, 0.17662852, 0.22849263, 0.008301044, -0.06586813, 0.06535347, -0.1422378, -0.21197955, 0.09594126, -0.019065345, 0.07993183, -0.18870543, -0.100329205, 0.106410205, 0.19904357), target);
	target = MulAdd(nc3, MF4x4(-0.010716086, 0.019676654, 0.14609855, 0.023858106, -0.09101523, 0.04618942, 0.019114424, 0.063025944, 0.017177893, -0.17157322, 0.041316323, 0.008979556, -0.012944043, 0.00247818, 0.06370907, 0.21294525), target);
	target = MulAdd(nd3, MF4x4(-0.35886058, -0.21411636, -0.102139756, -0.091692075, 0.06896005, 0.031774938, -0.11289269, 0.018020328, -0.07621171, -0.20134668, -0.03170399, -0.15741387, 0.21397352, 0.020581603, 0.058037966, -0.060088705), target);
	target = MulAdd(ne3, MF4x4(0.08237236, -0.40777692, -0.30334964, 0.17960687, 0.15861799, 0.38422614, 0.07123272, -0.14411296, -0.18338335, 0.20555314, -0.24229437, 0.11125418, -0.25821567, 0.21951115, -0.0689347, 0.30991623), target);
	target = MulAdd(nf3, MF4x4(-0.1809837, 0.2020823, 0.18093042, -0.28097653, 0.04832372, 0.05197796, 0.0411827, -0.038122583, -0.12748396, 0.2147528, 0.03581702, -0.06162546, 0.35705167, -0.17073934, 0.05283743, -0.1553281), target);
	target = MulAdd(ng3, MF4x4(0.049231995, 0.104612015, 0.13789916, 0.11476952, -0.08613189, 0.12533712, -0.11062187, -0.06180441, 0.0076576895, -0.07606035, -0.13825357, 0.05541409, -0.11110464, 0.027096856, -0.059329435, 0.07901976), target);
	target = MulAdd(nh3, MF4x4(-0.07326118, -0.05398769, 0.3154168, 0.25846845, 0.20782405, 0.157769, -0.02310168, 0.017850745, -0.08339611, 0.14059362, -0.12403927, 0.023322403, -0.19284059, 0.0866216, -0.06948787, 0.019149296), target);
	target = MulAdd(ni3, MF4x4(-0.035457414, -0.22270168, 0.16388698, -0.103444144, -0.18057363, 0.2918497, 0.10467282, -0.0905526, 0.13966475, -0.098633334, -0.01834713, -0.035242856, -0.05306878, 0.02205429, 0.07744791, 0.10596783), target);
	conv2d_4_tf[gxy] = target;
	
	target = MF4(0.045264397, 0.05760936, 0.027744984, -0.03773891);
	target = MulAdd(a1, MF4x4(0.19755663, 0.0316557, -0.026239445, -0.02093631, 0.34920403, 0.089713775, 0.15791516, -0.07875456, -0.10947356, 0.0650924, -0.018307874, 0.10422799, -0.06709603, -0.11965746, 0.02718723, 0.011129028), target);
	target = MulAdd(b1, MF4x4(-0.11617485, -0.031335115, 0.19744423, 0.10993791, 0.019927517, 0.3689939, -0.09384358, 0.15150148, -0.08009817, 0.0921147, -0.010306458, 0.10003431, -0.041360963, 0.29798675, -0.1715826, 0.19668113), target);
	target = MulAdd(c1, MF4x4(-0.053691022, 0.18052101, -0.046081945, 0.19882767, 0.22020999, 0.34823263, 0.106327124, -0.022915896, 0.01570857, -0.007507703, -0.012257527, 0.036691625, 0.086023636, 0.050882597, -0.05192003, -0.05078049), target);
	target = MulAdd(d1, MF4x4(-0.07258528, -0.19264953, 0.0077820197, 0.15891895, -0.02311384, -0.008074125, 0.3110597, 0.049998533, 0.02290246, 0.03217235, 0.15498875, -0.03103216, 0.24216467, 0.13539337, -0.051235467, -0.06826195), target);
	target = MulAdd(e1, MF4x4(-0.110576056, -0.3145707, -0.13334544, -0.005337209, -0.038422424, 0.13821185, -0.15107699, 0.14623423, -0.08636853, 0.107583255, 0.17422204, 0.18080167, 0.050008878, -0.12324271, 0.2247043, -0.27508256), target);
	target = MulAdd(f1, MF4x4(-0.05137364, 0.16223, -0.03729107, 0.31266937, -0.17589277, 0.21317652, -0.33287808, 0.21178558, -0.045284536, 0.07560065, 0.05269868, 0.14920329, 0.16866954, -0.1268599, 0.20590475, -0.011014125), target);
	target = MulAdd(g1, MF4x4(0.034846842, 0.2524156, 0.03403225, -0.11323429, -0.14184852, 0.017702477, -0.02463918, 0.10044771, 0.19502714, -0.0025532132, 0.053394504, 0.26317486, -0.027531786, 0.17660192, -0.0288518, 0.10305002), target);
	target = MulAdd(h1, MF4x4(0.0015593453, 0.080029555, -0.1503097, 0.18303742, -0.20101264, -0.21629538, -0.22573662, 0.083415814, -0.17538182, -0.14721964, 0.14281827, 0.059842914, 0.011950429, 0.24764334, -0.1454325, -0.30143398), target);
	target = MulAdd(i1, MF4x4(-0.035138246, -0.21716589, -0.16935606, -0.10491116, -0.2616234, -0.65694314, -0.055407632, -0.37251663, -0.15059815, -0.070271164, 0.041637342, 0.012102054, -0.1284768, -0.045593116, 0.053494472, -0.046751507), target);
	target = MulAdd(a2, MF4x4(-0.12646478, -0.119142495, 0.0041090506, 0.16849291, 0.00027152186, 0.0060362555, -0.055415455, -0.010880626, -0.017593162, -0.012767872, 0.017386466, -0.07673884, -0.12813187, -0.06382475, -0.017622227, -0.030992843), target);
	target = MulAdd(b2, MF4x4(0.2330042, 0.23233213, -0.064918295, -0.028516663, 0.0043700417, -0.009412538, 0.020097204, 0.078027494, 0.22039704, 0.09681993, -0.1377131, 0.04463947, 0.053339735, -0.015651379, 0.013501266, 0.108578116), target);
	target = MulAdd(c2, MF4x4(0.23399013, 0.055069428, 0.0113888625, 0.0061372546, -0.07836111, -0.034460228, 0.0017155824, -0.088409096, 0.03733338, -0.17709526, -0.09718914, -0.25720972, 0.0175349, 0.15622771, -0.1188024, 0.018442187), target);
	target = MulAdd(d2, MF4x4(0.06318714, 0.061475955, 0.060729396, -0.2142427, -0.10224866, 0.034940694, 0.19492944, 0.018143132, 0.07064079, -0.22845416, 0.010652238, -0.0011233883, 0.029130183, 0.17482844, -0.009811812, 0.019755777), target);
	target = MulAdd(e2, MF4x4(-0.21866481, 0.21452273, -0.5259575, -0.039219536, 0.15874244, -0.057900973, 0.10559354, 0.23824032, 0.108966984, -0.098509155, 0.007014109, -0.19821534, -0.05215934, 0.10909223, 0.100663096, -0.06883611), target);
	target = MulAdd(f2, MF4x4(-0.12868437, 0.006826078, -0.21385023, 0.069496915, -0.06559356, 0.090547845, -0.07395987, -0.06983689, 0.06552238, -0.12867814, -0.08192026, -0.33435416, -0.051290937, -0.02937074, 0.090245195, -0.026612237), target);
	target = MulAdd(g2, MF4x4(0.23456517, 0.27903032, -0.039212193, -0.012552891, -0.19781788, -0.035103757, -0.009250316, 0.10727226, 0.19742231, -0.079642996, -0.2613758, -0.15201536, 0.102801695, -0.0107969325, 0.16421579, 0.12108303), target);
	target = MulAdd(h2, MF4x4(-0.081254065, -0.088084355, -0.091935016, 0.24067412, -0.020433908, -0.01316852, -0.06662833, -0.2533817, 0.14042647, -0.02623474, 0.05427906, 0.041403648, -0.13581693, -0.08902222, -0.15670143, 0.013441458), target);
	target = MulAdd(i2, MF4x4(-0.015764505, -0.113010205, -0.15281607, -0.077271774, 0.0904112, 0.09933737, 0.067184925, 0.2099568, -0.101301536, 0.06434189, -0.0758522, -0.12554163, 0.06781772, 0.007166253, -0.085833766, 0.06006488), target);
	target = MulAdd(a3, MF4x4(-0.0008048365, 0.0912284, -0.0055085155, 0.023269827, -0.022154478, 0.08539601, 0.035023473, -0.0037330675, 0.11452262, 0.047892746, 0.008300871, -0.01195116, 0.047538597, -0.10830887, 0.05510819, -0.08836116), target);
	target = MulAdd(b3, MF4x4(-0.038602248, 0.023333155, 0.017770592, -0.1674776, 0.06629619, 0.083431914, 0.026809458, 0.08592056, 0.14014852, -0.14666164, 0.019641537, -0.0573306, -0.020499265, 0.007868977, -0.04190651, 0.020347582), target);
	target = MulAdd(c3, MF4x4(-0.1610257, 0.21653429, 0.10658098, 0.15106596, 0.029077698, 0.16445225, 0.15524676, 0.09390834, 0.096011646, -0.032807898, -0.09418951, -0.0093525015, 0.06159448, -0.009395444, -0.10014662, -0.030301452), target);
	target = MulAdd(d3, MF4x4(-0.022683617, -0.23651919, -0.031805664, 0.023116864, -0.07386424, 0.20458803, 0.08983447, -0.08244156, 0.08310062, 0.14591648, 0.17395934, 0.0062589166, 0.22174175, 0.14258352, -0.028493408, -0.115363955), target);
	target = MulAdd(e3, MF4x4(-0.08310355, -0.17647965, -0.19287375, 0.10848365, 0.120546475, -0.1464013, -0.038455628, 0.10530652, 0.49538115, 0.023421936, 0.3173384, 0.058539134, -0.27795956, 0.08117526, 0.033342082, -0.12135774), target);
	target = MulAdd(f3, MF4x4(-0.08346938, -0.034818605, 0.06265251, 0.09470142, -0.014027538, 0.013816392, -0.047068585, -0.007864913, -0.073640525, -0.1490151, -0.09421087, -0.07231172, 0.21453248, -0.053285554, 0.09661593, -0.07566676), target);
	target = MulAdd(g3, MF4x4(-0.08119892, -0.011698777, -0.0014542739, -0.0031197777, -0.093343884, 0.07836053, 0.14061041, 0.032417424, 0.032266736, -0.039402176, 0.0857551, -0.14606103, -0.106497854, -0.021479463, -0.036599685, 0.04007321), target);
	target = MulAdd(h3, MF4x4(0.011121453, -0.020399215, 0.016996361, 0.048273075, -0.07153608, -0.044302233, -0.0035937368, 0.16915803, -0.014105862, 0.1021961, 0.15072922, 0.015028268, -0.009132996, -0.06612329, -0.034465823, -0.142786), target);
	target = MulAdd(i3, MF4x4(-0.020469163, -0.117958315, 0.0012601769, 0.007204419, 0.009460007, -0.021850191, -0.014184652, 0.06922846, -0.1432164, -0.02172806, -0.0671699, -0.039830353, 0.011462847, -0.021253375, 0.084333375, 0.026236529), target);
	target = MulAdd(na1, MF4x4(-0.32116294, 0.022814747, 0.053154226, 0.08573102, 0.24082868, -0.11634813, -0.12103037, -0.072189964, 0.07916793, 0.005124598, -0.038430523, -0.020428248, -0.074155636, 0.0026447256, -0.12052403, -0.0008143328), target);
	target = MulAdd(nb1, MF4x4(0.15720156, 0.12637223, -0.014097743, -0.1463337, -0.11050782, -0.1272711, -0.14383449, -0.18176568, 0.016586874, -0.07671649, 0.061175086, -0.011885735, 0.16967547, -0.19338857, 0.033413097, -0.15828142), target);
	target = MulAdd(nc1, MF4x4(-0.04272862, 0.08448119, 0.03642693, 0.013086318, -0.18102542, -0.13177295, -0.12725672, 0.033150475, -0.022273265, -0.1913372, 0.12102487, -0.06349284, 0.02544458, -0.17942795, 0.13517797, -0.03200014), target);
	target = MulAdd(nd1, MF4x4(0.037924215, 0.18611626, -0.17951478, 0.13935459, 0.27325365, -0.083892785, -0.022289941, 0.14084025, -0.106356315, 0.046254314, -0.17703468, 0.116976924, -0.08896167, -0.0025314027, 0.010913456, -0.070031345), target);
	target = MulAdd(ne1, MF4x4(-0.28527796, 0.19547825, -0.30854046, -0.033967514, 0.060653128, -0.019419098, -0.0060284995, -0.0987247, 0.07500941, -0.023585685, -0.03395071, -0.17988594, 0.21953014, 0.4072299, -0.031897858, -0.18284276), target);
	target = MulAdd(nf1, MF4x4(0.06912873, -0.05407648, 0.008376532, 0.020522904, -0.026434029, 0.09916825, 0.030747496, 0.022514053, 0.25722584, 0.115966186, 0.08143656, 0.015693888, 0.1200375, 0.11970545, 0.19118182, 0.05830196), target);
	target = MulAdd(ng1, MF4x4(-0.03685362, -0.12470895, -0.0010968394, 0.021243107, 0.054362122, 0.00057743577, -0.016307356, -0.124212846, -0.1504553, 0.18175974, -0.14346407, -0.1288348, 0.004379253, -0.09421467, 0.07276572, 0.01464248), target);
	target = MulAdd(nh1, MF4x4(-0.0058593387, -0.009850785, 0.08837556, -0.13175677, -0.02959981, 0.22543302, 0.08877934, 0.10847382, 0.105746165, 0.07286193, -0.1591772, -0.07605538, 0.16931008, 0.12505956, -0.02318999, 0.3341336), target);
	target = MulAdd(ni1, MF4x4(0.07958676, 0.019705648, 0.17511873, -0.027326066, -0.049889054, -0.08413224, -0.0232099, -0.16867599, 0.010381808, -0.015460935, 0.04096288, -0.013190291, 0.12450602, 0.065210946, 0.015979856, 0.15937561), target);
	target = MulAdd(na2, MF4x4(-0.10023914, -0.05083627, 0.09159179, 0.104829505, 0.08269442, 0.055139758, -0.060481716, -0.040459175, 0.16207811, -0.1342935, 0.0010139308, -0.13080461, 0.04637847, -0.111120075, -0.017309861, 0.021282183), target);
	target = MulAdd(nb2, MF4x4(-0.0018206073, -0.13991879, 0.08375063, -0.003037848, -0.17680502, -0.20550339, 0.16136415, -0.06376335, -0.0617298, 0.15906328, -0.057181396, -0.028893461, 0.04224926, -0.0398277, -0.19131757, -0.16473022), target);
	target = MulAdd(nc2, MF4x4(0.093972325, 0.0698625, 0.07116559, 0.014768529, -0.097781256, 0.15581349, 0.03573931, 0.22741152, -0.091118366, 0.028577322, -0.026862804, 0.0152023, -0.23760842, 0.14840253, -0.14937884, 0.042642627), target);
	target = MulAdd(nd2, MF4x4(-0.2281663, 0.22290257, 0.017739927, 0.12094125, 0.03124976, -0.00534154, -0.24323007, -0.088304035, 0.2465856, 0.16869143, -0.06888532, -0.09435835, 0.049901593, 0.12926158, 0.022874845, -0.02944982), target);
	target = MulAdd(ne2, MF4x4(-0.066828735, -0.04649895, 0.28869498, -0.09773703, -0.056571167, 0.48939937, -0.56230384, -0.034113284, -0.13833, 0.039226096, -0.12087815, 0.032742836, 0.040849674, -0.017160047, -0.11052594, 0.246754), target);
	target = MulAdd(nf2, MF4x4(0.04952853, -0.090852216, 0.034561165, 0.038246352, -0.19297872, 0.054810636, 0.019495303, 0.2522964, -0.19981322, -0.07192788, -0.12085502, -0.028823836, -0.19763254, -0.20398128, -0.14728573, -0.11571746), target);
	target = MulAdd(ng2, MF4x4(-0.22692326, -0.050723083, 0.052394703, 0.061108653, 0.086359546, 0.25432214, -0.1922104, 0.07316734, -0.12277421, -0.0070557455, 0.021929247, 0.09811275, -0.10974717, -0.1871087, 0.1836082, -0.101442546), target);
	target = MulAdd(nh2, MF4x4(0.12952654, 0.126504, -0.07590766, -0.022820955, 0.40705776, 0.6374981, -0.5181212, 0.38906044, -0.10114032, -0.24955663, 0.30309865, -0.13581154, 0.048173904, -0.061500076, 0.014717425, -0.13521792), target);
	target = MulAdd(ni2, MF4x4(0.06257947, -0.06779901, 0.043823577, 0.13284041, 0.020754592, 0.042710133, -0.1584648, 0.049175818, 0.022709293, -0.1911205, 0.030108612, -0.15437542, 0.05411346, 0.12631242, -0.017832479, 0.0029719612), target);
	target = MulAdd(na3, MF4x4(-0.30879283, -0.13608143, 0.051477402, -0.0146274315, -0.17261262, 0.014548273, 0.013784603, -0.082064405, -0.054273766, 0.050572615, -0.08670705, 0.048421264, 0.0028941107, -0.049762383, -0.08087372, 0.03134621), target);
	target = MulAdd(nb3, MF4x4(-0.12345668, -0.0679132, -0.06099901, -0.09764733, -0.1938452, 0.007824728, 0.21290497, 0.07214579, -0.11728738, -0.01631362, 0.18290576, 0.11172875, 0.0070077768, -0.31685776, 0.20877774, -0.068262406), target);
	target = MulAdd(nc3, MF4x4(0.023581397, 0.21787596, 0.24790402, 0.1827894, -0.12552118, -0.15526615, -0.049397513, -0.09088568, 0.02361005, -0.1624447, 0.10663829, -0.08762141, -0.089876376, -0.23469001, -0.22833428, -0.08547564), target);
	target = MulAdd(nd3, MF4x4(-0.20836076, -0.38739493, -0.08088587, 0.056517366, -0.19016425, 0.18150248, -0.20127869, -0.0034698115, -0.12240914, -0.16373073, -0.23683731, 0.08775501, -0.115361534, 0.058962952, 0.03591275, -0.12650393), target);
	target = MulAdd(ne3, MF4x4(-0.12940276, -0.20929182, 0.1972825, -0.09083828, -0.062463745, 0.18738677, -0.12602556, -0.102121696, -0.71687216, 0.005637694, -0.51085055, -0.182672, 0.21876547, 0.032868937, 0.12119801, -0.034960978), target);
	target = MulAdd(nf3, MF4x4(-0.2834514, 0.5645042, -0.40262035, -0.050943233, -0.06192488, 0.27314487, 0.2216658, 0.241159, 0.19821955, 0.07347663, 0.12771457, 0.09401408, 0.0923556, 0.037260618, 0.14539954, 0.20723365), target);
	target = MulAdd(ng3, MF4x4(0.17254238, 0.17086907, 0.1689637, -0.12215918, 0.019369515, -0.101492874, -0.0068981387, -0.052212972, -0.09072614, 0.06295019, -0.03507004, 0.020812936, 0.049310055, 0.041793864, -0.1676009, -0.020666601), target);
	target = MulAdd(nh3, MF4x4(0.12045707, 0.34878096, -0.42983723, 0.00031615017, -0.1935727, 0.04406262, 0.14843978, -0.09603145, 0.27862465, 0.1575749, -0.19306137, 0.2065606, -0.09507491, -0.008450778, -0.18955202, 0.099690795), target);
	target = MulAdd(ni3, MF4x4(0.039927684, 0.074257486, 0.034648035, -0.05261268, -0.09017409, 0.20786566, 0.06129257, 0.1432679, 0.13264295, -0.08895135, 0.09662802, -0.06903006, 0.12193372, 0.059526477, 0.059548043, -0.03190614), target);
	conv2d_4_tf1[gxy] = target;

	target = MF4(-0.05222755, 0.09198729, -0.07302347, 0.0022074024);
	target = MulAdd(a1, MF4x4(0.07583615, -0.048960842, 0.013508587, 0.2201662, 0.0375764, 0.27756596, -0.33754793, -0.38809955, -0.21281771, 0.15472671, 0.02073204, -0.050901294, 0.090472914, -0.047557913, -0.017766517, -0.20457055), target);
	target = MulAdd(b1, MF4x4(0.17282517, -0.18378912, 0.13851488, 0.021213405, -0.36854526, 0.37494987, -0.22338714, -0.17190737, -0.13889556, 0.16321859, 0.009137597, -0.16061524, 0.10725205, 0.047671694, 0.00692477, -0.20811509), target);
	target = MulAdd(c1, MF4x4(-0.15370452, 0.03701021, -0.055506952, -0.07852536, 0.09814061, 0.15283902, -0.048923336, 0.10439438, 0.05341204, -0.04028067, -0.050656542, 0.08114064, 0.1721227, -0.064678125, -0.07158856, 0.04002012), target);
	target = MulAdd(d1, MF4x4(-0.02824745, 0.29039058, 0.25719696, 0.33553144, 0.07964746, -0.08963374, -0.26119536, -0.1704102, 0.114965275, 0.0677081, 0.027690304, 0.0298201, 0.10237492, -0.18169363, -0.12240578, -0.067747764), target);
	target = MulAdd(e1, MF4x4(-0.05635207, -0.013902026, 0.15410937, -0.07788553, 0.09099828, -0.018942324, 0.03290936, -0.0029388326, 0.018940244, 0.011952412, 0.011450913, -0.07999776, -0.21413402, 0.39397267, -0.09774473, -0.2009581), target);
	target = MulAdd(f1, MF4x4(0.10084101, -0.086656086, 0.13495307, -0.028954845, 0.05104348, -0.046465315, -0.037925158, 0.10368827, -0.14589089, 0.12413491, -0.007988239, -0.02158783, 0.10073373, -0.0029589783, -0.3387392, 0.19062865), target);
	target = MulAdd(g1, MF4x4(0.076070085, 0.12063033, -0.07693161, 0.13905032, -0.07355619, -0.23172334, 0.05373458, -0.06742532, 0.01403963, -0.021842232, 0.101363756, -0.0811199, 0.088289686, -0.10678228, -0.08785652, -0.08524422), target);
	target = MulAdd(h1, MF4x4(-0.063252464, 0.122554146, -0.08701854, -0.013642947, 0.25842702, -0.113629796, 0.18287642, 0.2543394, -0.008996402, 0.14150178, -0.018443773, -0.037387278, 0.01677981, 0.09373098, -0.03942739, 0.020894075), target);
	target = MulAdd(i1, MF4x4(0.06455971, -0.060106214, -0.07037024, -0.051795334, 0.033154495, -0.25538102, 0.20138124, -0.15417135, -0.11027817, 0.027104143, 0.075549774, 0.021436706, 0.04445013, 0.12956707, -0.13284694, 0.03516967), target);
	target = MulAdd(a2, MF4x4(0.009175639, 0.25271195, -0.0853253, -0.036355734, 0.10765164, 0.0524366, -0.038031954, -0.012370962, 0.038269047, -0.0074043465, -0.055629972, -0.028956192, -0.10555365, 0.053293, 0.04761788, 0.19511466), target);
	target = MulAdd(b2, MF4x4(-0.026226144, 0.45355338, -0.2787842, 0.40786192, 0.0040905946, -0.01837184, -0.009942586, 0.2053553, -0.0030270698, 0.069373004, 0.07934941, -0.03093551, 0.16749686, 0.050042853, -0.11040056, -0.073083684), target);
	target = MulAdd(c2, MF4x4(0.05996956, -0.016178278, 0.039540496, -0.027844483, -0.06289786, -0.046466228, 0.19139567, -0.073992915, 0.06776269, -0.019077418, 0.14830731, 0.095275655, -0.14347468, 0.1072097, 0.005600533, 0.04901071), target);
	target = MulAdd(d2, MF4x4(-0.16952017, -0.032340128, 0.19480783, 0.2601324, 0.29126725, -0.0715444, -0.009702548, 0.0042752293, 0.024718119, -0.08628732, -0.064047016, -0.116904415, -0.06644218, 0.09953292, -0.033268385, 0.17125584), target);
	target = MulAdd(e2, MF4x4(0.3325542, -0.03779118, 0.33856392, 0.3304049, 0.104141004, -0.053430308, 0.31669936, 0.0130112395, 0.09034627, -0.02017166, -0.025744867, 0.026532227, 0.0200407, -0.08722534, -0.30203685, -0.14907038), target);
	target = MulAdd(f2, MF4x4(-0.01891194, 0.093512826, 0.026973069, -0.24845296, -0.072510146, 0.025618952, 0.19024812, -0.07557172, -0.027113652, -0.03626637, 0.2683275, -0.10471766, -0.008031393, 0.13384898, 0.00395866, 0.020902868), target);
	target = MulAdd(g2, MF4x4(-0.041550912, 0.08089579, 0.026400283, 0.017546514, 0.10747152, 0.07966492, 0.02695042, 0.014157312, -0.13807489, -0.12708282, -0.10057461, 0.014437817, 0.26250824, -0.16103023, -0.13342577, 0.05060978), target);
	target = MulAdd(h2, MF4x4(0.06584065, -0.035929736, 0.0042849337, -0.10942049, -0.16394515, 0.08045988, 0.13154416, -0.0028894013, 0.0023928252, 0.04469802, -0.10695226, 0.05558777, -0.25354344, 0.14010456, 0.05542217, -0.114946045), target);
	target = MulAdd(i2, MF4x4(0.050993685, 0.13932824, 0.0033797733, -0.035310924, 0.022385782, 0.017365059, -0.17256701, -0.07757648, -0.0912558, 0.01864556, 0.13062927, -0.07577928, -0.07418382, 0.19597183, 0.03150399, 0.023021322), target);
	target = MulAdd(a3, MF4x4(0.052010637, 0.050168213, -0.07215345, 0.05805453, -0.0041914587, 0.022057746, 0.12245675, -0.014609538, 0.05546434, 0.03802747, -0.10866313, 0.00012593597, 0.025002997, 0.03302225, -0.10627746, -0.022926291), target);
	target = MulAdd(b3, MF4x4(-0.17316228, 0.0423441, 0.038386445, 0.15334567, -0.11682614, 0.04387397, -0.034430787, 0.05456901, -0.10287161, 0.09251676, -0.15516847, 0.01151086, 0.062166303, -0.06404339, -0.1341287, -0.11250874), target);
	target = MulAdd(c3, MF4x4(0.0041548237, -0.05339408, 0.12976702, -0.091956094, -0.07106556, 0.1537892, -0.14351088, 0.049248494, 0.0017415709, -0.03980619, 0.022205863, 0.07874843, 0.0486586, 0.07449563, -0.07935637, 0.035376832), target);
	target = MulAdd(d3, MF4x4(-0.032703526, 0.049651176, -0.14031135, -0.03314136, -0.05597869, 0.10001647, 0.134734, -0.050313897, 0.096650064, 0.06294751, -0.064859584, -0.1544743, 0.0041159303, -0.21177946, -0.08641454, 0.20853557), target);
	target = MulAdd(e3, MF4x4(-0.26784652, 0.045316227, 0.24048522, 0.0205891, -0.0044153836, -0.00084845145, -0.13039418, 0.008880892, -0.022925006, 0.25047663, -0.10610026, 0.26862314, 0.1495082, -0.30531225, 0.17336509, -0.095686845), target);
	target = MulAdd(f3, MF4x4(0.16892208, -0.04892237, -0.12343488, 0.076279886, -0.088687725, -0.031417985, 0.036753975, -0.02488052, -0.020715091, 0.037822228, 0.017967682, 0.09978998, 0.10307546, 0.021783398, -0.03838329, 0.16863413), target);
	target = MulAdd(g3, MF4x4(0.0030781403, 0.046299078, 0.021687783, 0.0070031965, 0.06806685, 0.08483792, -0.078655794, 0.046040457, 0.037727088, -0.07263033, -0.036312647, 0.055449635, -0.038422115, 0.0009298235, 0.024799686, 0.05429828), target);
	target = MulAdd(h3, MF4x4(-0.018482856, -0.035400447, 0.06548978, -0.116905235, 0.103153236, -0.020226527, -0.04428763, -0.0505854, 0.13939099, 0.06169983, 0.07293202, 0.1059522, 0.05596004, 0.022870086, 0.06962978, -0.024740675), target);
	target = MulAdd(i3, MF4x4(0.0098381555, -0.110539526, -0.0029312337, 0.051618274, -0.040557995, -0.11799748, -0.09392277, -0.04956917, -0.05159161, 0.030810604, 0.04230067, -0.04746804, 0.080403574, 0.012429489, -0.029210133, 0.05341304), target);
	target = MulAdd(na1, MF4x4(0.06609526, -0.18755382, -0.03701953, -0.1743458, 0.069703676, 0.0006303799, -0.15638213, 0.10318732, 0.08893642, -0.1195937, -0.055782318, -0.0185906, 0.012925918, 0.123628914, 0.04870321, 0.116520494), target);
	target = MulAdd(nb1, MF4x4(0.04936669, -0.14093854, 0.0012639028, 0.10475395, -0.096697986, 0.019948844, 0.05699649, 0.09687703, 0.016553551, -0.17477356, 0.0358826, 0.003379147, 0.0027950767, 0.061992507, -0.038799245, -0.029348955), target);
	target = MulAdd(nc1, MF4x4(-0.0073947236, -0.016064813, 0.17795284, -0.081998095, -0.07971293, -0.021884581, 0.07818178, -0.1183752, 0.041862104, -0.049028065, 0.06426883, 0.047562487, 0.03306496, 0.024669351, -0.102706164, 0.06250834), target);
	target = MulAdd(nd1, MF4x4(0.03841001, -0.121903636, 0.009876164, -0.20964918, 0.16115156, -0.03041022, 0.024465065, 0.06145637, -0.096132785, 0.073770344, 0.030677194, 0.012882628, 0.1854335, 0.051307946, -0.05652639, -0.017714364), target);
	target = MulAdd(ne1, MF4x4(0.14671369, -0.21775708, 0.037446484, 0.19568916, -0.08120511, 0.009589117, -0.26862335, 0.10114162, -0.280923, 0.40576807, 0.07634094, -0.022802232, 0.26644167, -0.29799074, -0.07520144, -0.09298707), target);
	target = MulAdd(nf1, MF4x4(0.12787306, -0.03597792, -0.0501856, 0.0003554054, -0.016662559, 0.01793402, 0.036731128, 0.057142165, 0.14208297, -0.07816983, -0.06547921, 0.12818106, 0.03593736, -0.15703554, -0.039033424, -0.0044069514), target);
	target = MulAdd(ng1, MF4x4(0.058662556, -0.080323815, -0.02522527, -0.1580162, 0.034481227, -0.0857634, 0.040548056, 0.089334026, -0.3016336, 0.15299423, -0.04793492, 0.0012853529, 0.05151393, 0.03197434, 0.05723357, -0.06894418), target);
	target = MulAdd(nh1, MF4x4(0.12040549, -0.2529116, 0.10356855, -0.04598697, 0.0062763286, 0.11428357, -0.16604745, -0.037279624, 0.018803852, 0.17792255, 0.059715357, -0.011601418, -0.17485033, 0.1352793, -0.09469166, -0.009272873), target);
	target = MulAdd(ni1, MF4x4(0.07145802, -0.048490215, 0.14784634, -0.052574188, -0.023536265, -0.03715718, 0.02188599, -0.009487062, 0.095758304, -0.05260447, -0.04488383, -0.0022170001, -0.010753989, 0.1285623, -0.078049324, 0.07791392), target);
	target = MulAdd(na2, MF4x4(-0.08608365, 0.024032418, 0.03376676, -0.06672097, 0.14239122, -0.20172556, 0.059492715, 0.039168652, -0.05975819, -0.14009707, 0.06505314, 0.005366894, 0.023043798, -0.14035852, 0.06564292, -0.01975755), target);
	target = MulAdd(nb2, MF4x4(0.06098348, 0.020505348, -0.071457036, -0.088892065, 0.25814053, -0.4024066, 0.04613967, -0.009115204, 0.053136446, -0.10263362, 0.08311103, 0.010236834, 0.06737908, 0.13245155, 0.036181718, 0.21113388), target);
	target = MulAdd(nc2, MF4x4(-0.013562919, -0.008662602, -0.10824871, -0.005553834, -0.10970149, 0.013045041, -0.07641659, -0.06609716, 0.08249468, -0.21136107, -0.08410633, -0.020448437, -0.25199074, 0.0641994, 0.07502806, -0.19701128), target);
	target = MulAdd(nd2, MF4x4(0.18910834, -0.15423289, 0.023417983, 0.005038285, -0.059044287, 0.077326454, 0.042352542, 0.06904583, -0.118472, -0.025113037, 0.008691595, 0.04278817, 0.1968958, -0.23562303, 0.0124163935, -0.011455441), target);
	target = MulAdd(ne2, MF4x4(0.033834323, -0.08521952, -0.164473, -0.18196565, 0.056635767, -0.22095878, -0.21966869, -0.24707489, 0.055047844, -0.0854704, 0.044351656, 0.31924927, 0.3393569, -0.09816152, -0.024666212, 0.12658896), target);
	target = MulAdd(nf2, MF4x4(0.03546097, -0.084772296, -0.017927025, -0.03168567, 0.018861301, -0.19742817, -0.023542268, -0.11313523, 0.013870798, -0.057313353, -0.048428833, -0.011003569, 0.060736526, -0.16871192, 0.12989289, -0.13272311), target);
	target = MulAdd(ng2, MF4x4(-0.067924276, 0.042576067, 0.08058409, -0.05704767, 0.047355015, -0.009834332, -0.021743877, -0.09313564, -0.23810904, 0.071954355, 0.026877925, -0.06419035, 0.11408852, -0.094918594, -0.015347595, 0.15758565), target);
	target = MulAdd(nh2, MF4x4(0.016378017, 0.04923884, 0.042090666, -0.020616362, -0.3205589, 0.29866445, -0.09028968, 0.17835416, 0.069200985, -0.19676962, -0.038767412, 0.0066911504, 0.23217689, -0.32092544, 0.21888864, -0.031248417), target);
	target = MulAdd(ni2, MF4x4(0.1240904, -0.057505004, 0.008518463, -0.0013766377, 0.13912258, 0.25812533, -0.10721238, 0.041414622, -0.014356129, -0.11711117, -0.07339878, -0.042370543, 0.030094689, -0.083110586, -0.15375537, 0.008313004), target);
	target = MulAdd(na3, MF4x4(-0.42602807, -0.14819323, 0.24997748, -0.07033313, 0.053972986, -0.2672035, 0.16919206, 0.5153194, -0.12283088, -0.007163936, 0.050310373, -0.005151009, -0.0050212573, -0.07570248, 0.12484032, 0.028931405), target);
	target = MulAdd(nb3, MF4x4(0.21234803, -0.17263128, 0.108827524, 0.36454353, 0.15589741, -0.09056867, 0.18670312, -0.0886985, 0.09418289, -0.1530667, 0.07014518, 0.05093901, -0.314724, -0.09647151, 0.10014826, -0.05449102), target);
	target = MulAdd(nc3, MF4x4(0.083997354, -0.19228217, 0.17081402, 0.07869603, -0.07707866, -0.1114649, 0.14544345, -0.04913886, 0.114071324, 0.039774146, 0.026449671, -0.0046011102, -0.26660243, 0.06624741, 0.04318286, 0.025324916), target);
	target = MulAdd(nd3, MF4x4(-0.34038183, 0.3126945, 0.25694248, -0.0694824, 0.09484312, -0.08968785, 0.07317779, 0.1351912, -0.3336016, 0.16971526, 0.09233206, 0.16124597, 0.01231051, -0.021199688, 0.1954184, 0.11741164), target);
	target = MulAdd(ne3, MF4x4(0.07364691, -0.46501446, -0.3260576, 0.019369395, 0.12856261, 0.01518898, 0.18648395, -0.06153823, 0.1424968, -0.4844148, 0.06327706, -0.23134615, -0.21754341, 0.16389093, 0.1828624, -0.16564755), target);
	target = MulAdd(nf3, MF4x4(0.13003388, -0.33331057, 0.5363979, -0.067382425, 0.0024128144, 0.10726199, 0.120562315, 0.027075078, 0.044253387, -0.22810216, -0.14027081, 0.05570364, -0.0012832935, 0.0066472166, -0.09584242, 0.038570657), target);
	target = MulAdd(ng3, MF4x4(0.15075065, -0.14929996, 0.12013421, -0.053535018, -0.059225604, 0.04993067, 0.12190514, -0.07199992, -0.12612323, 0.08610025, 0.0055669006, -0.01092246, -0.12504235, 0.071841165, 0.04702684, 0.04890323), target);
	target = MulAdd(nh3, MF4x4(-0.59378284, 0.28029972, 0.041228425, 0.088731185, 0.10143785, -0.0147893205, 0.043729015, 0.22425093, -0.27061638, 0.23045406, 0.025149027, -0.09266012, -0.10645805, -0.021057274, 0.20209946, -0.07459568), target);
	target = MulAdd(ni3, MF4x4(-0.003925717, 0.19509377, -0.0011443064, -0.07948601, 0.0008185968, -0.072344884, 0.2925546, -0.14168583, -0.04355419, 0.048995577, -0.090038754, -0.020567076, -0.1507524, 0.0033320382, 0.11161536, 0.048364066), target);
	conv2d_4_tf2[gxy] = target;
}

//!PASS 6
//!DESC Conv-4x3x3x24
//!IN conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2
//!OUT conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2
//!BLOCK_SIZE 8
//!NUM_THREADS 64

void Pass6(uint2 blockStart, uint3 threadId) {
	uint2 gxy = Rmp8x8(threadId.x) + blockStart;
	uint2 inputSize = GetInputSize();
	if (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {
		return;
	}

	float2 inputPt = GetInputPt();
	float2 pos = (gxy + 0.5f) * inputPt;

	// [ a, d, g ]
	// [ b, e, h ]
	// [ c, f, i ]
	MF4 a1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e1 = conv2d_4_tf.SampleLevel(sam, pos, 0);
	MF4 f1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na1 = max(-a1, 0);
	MF4 nb1 = max(-b1, 0);
	MF4 nc1 = max(-c1, 0);
	MF4 nd1 = max(-d1, 0);
	MF4 ne1 = max(-e1, 0);
	MF4 nf1 = max(-f1, 0);
	MF4 ng1 = max(-g1, 0);
	MF4 nh1 = max(-h1, 0);
	MF4 ni1 = max(-i1, 0);

	a1 = max(a1, 0);
	b1 = max(b1, 0);
	c1 = max(c1, 0);
	d1 = max(d1, 0);
	e1 = max(e1, 0);
	f1 = max(f1, 0);
	g1 = max(g1, 0);
	h1 = max(h1, 0);
	i1 = max(i1, 0);

	MF4 a2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e2 = conv2d_4_tf1.SampleLevel(sam, pos, 0);
	MF4 f2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na2 = max(-a2, 0);
	MF4 nb2 = max(-b2, 0);
	MF4 nc2 = max(-c2, 0);
	MF4 nd2 = max(-d2, 0);
	MF4 ne2 = max(-e2, 0);
	MF4 nf2 = max(-f2, 0);
	MF4 ng2 = max(-g2, 0);
	MF4 nh2 = max(-h2, 0);
	MF4 ni2 = max(-i2, 0);

	a2 = max(a2, 0);
	b2 = max(b2, 0);
	c2 = max(c2, 0);
	d2 = max(d2, 0);
	e2 = max(e2, 0);
	f2 = max(f2, 0);
	g2 = max(g2, 0);
	h2 = max(h2, 0);
	i2 = max(i2, 0);

	MF4 a3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e3 = conv2d_4_tf2.SampleLevel(sam, pos, 0);
	MF4 f3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na3 = max(-a3, 0);
	MF4 nb3 = max(-b3, 0);
	MF4 nc3 = max(-c3, 0);
	MF4 nd3 = max(-d3, 0);
	MF4 ne3 = max(-e3, 0);
	MF4 nf3 = max(-f3, 0);
	MF4 ng3 = max(-g3, 0);
	MF4 nh3 = max(-h3, 0);
	MF4 ni3 = max(-i3, 0);

	a3 = max(a3, 0);
	b3 = max(b3, 0);
	c3 = max(c3, 0);
	d3 = max(d3, 0);
	e3 = max(e3, 0);
	f3 = max(f3, 0);
	g3 = max(g3, 0);
	h3 = max(h3, 0);
	i3 = max(i3, 0);

	MF4 target = MF4(-0.08908616, -0.020727161, -0.10065884, -0.042632345);
	target = MulAdd(a1, MF4x4(0.10303006, -0.024129005, -0.006376188, 0.08361518, -0.030736713, 0.059527945, -0.05874042, 0.04269124, -0.09319534, 0.09713511, -0.08360228, 0.022383748, 0.27456298, -0.10364148, 0.011523791, 0.0006774627), target);
	target = MulAdd(b1, MF4x4(-0.05541989, -0.08698082, 0.055311147, 0.013819714, 0.10675169, -0.046272285, 0.0027710905, 0.097424075, 0.40062046, 0.012139614, 0.06539418, -0.26190186, 0.26748738, 0.010693152, -0.26337343, 0.1396046), target);
	target = MulAdd(c1, MF4x4(-0.0038561742, 0.06331599, 0.07280889, 0.0049921786, 0.046265908, 0.1273493, -0.0657387, -0.039872307, 0.036709707, 0.040611606, 0.10370152, -0.07017421, -0.15158589, -0.0944041, 0.16055441, 0.026905995), target);
	target = MulAdd(d1, MF4x4(0.13568372, 0.42744243, 0.03610402, 0.13057254, -0.15189639, 0.3270829, 0.07523759, -0.03377655, -0.11991776, 0.043995053, -0.04695395, 0.057843372, 0.123827286, -0.5117275, -0.27580252, -0.06490049), target);
	target = MulAdd(e1, MF4x4(0.20916292, 0.14519285, 0.29285586, -0.14002982, -0.02903087, 0.07725845, 0.42922875, 0.22422947, -0.006809662, 0.25789696, -0.23387176, 0.18227082, 0.1949605, 0.39381132, 0.13233, -0.03979206), target);
	target = MulAdd(f1, MF4x4(0.050690006, -0.016765494, -0.06890609, -0.06165983, -0.1547756, 0.030649774, -0.10065935, -0.123401724, -0.2001527, -0.14910932, -0.030470714, -0.036002573, 0.13485923, 0.09405768, -0.14694588, 0.12113117), target);
	target = MulAdd(g1, MF4x4(-0.09391889, 0.13889499, 0.0544932, -0.06221289, -0.13378021, 0.18230891, -0.04311924, 0.09056919, -0.00071865856, -0.1485109, -0.18140738, -0.22380811, -0.052037843, 0.07200541, -0.08552131, 0.039394405), target);
	target = MulAdd(h1, MF4x4(-0.1129644, -0.08789729, -0.20112263, -0.14140582, 0.13343073, 0.15928635, -0.0004416807, -0.08655255, 0.11923446, 0.14782757, -0.2526453, 0.06534483, 0.28670022, 0.08661807, -0.05939282, -0.1264073), target);
	target = MulAdd(i1, MF4x4(-0.069123454, -0.024052331, 0.08405668, 0.0024100337, -0.0091934, 0.06140827, 0.07263404, -0.09847185, -0.15793528, -0.043271005, -0.051817372, -0.060237445, -0.0066771735, 0.12329388, 0.061106086, 0.036974255), target);
	target = MulAdd(a2, MF4x4(-0.05637151, -0.10100362, 0.03314885, -0.10366338, 0.030021148, 0.03372163, -0.032138795, 0.01293222, -0.11080214, 0.010572153, -0.01362632, 0.010574912, -0.16158684, -0.08245153, 0.118470125, -0.13403644), target);
	target = MulAdd(b2, MF4x4(0.1868926, -0.01747845, -0.18130527, 0.13928702, -0.05539085, 0.032680083, 0.074883655, 0.018892298, -0.17280246, -0.047390517, 0.27345997, -0.022709364, -0.08344301, -0.014933963, -0.09545577, -0.033305403), target);
	target = MulAdd(c2, MF4x4(-0.30393317, -0.05171247, 0.00841183, 0.14072971, 0.08149488, 0.018601093, 0.021672362, 0.060667925, -0.0843176, -0.10364707, -0.21641973, -0.042780574, 0.08775126, -0.1777216, 0.13253935, -0.06866668), target);
	target = MulAdd(d2, MF4x4(-0.09160829, -0.026550675, -0.2643876, 0.23035419, -0.092297986, -0.0631223, -0.094887145, -0.04810445, -0.17819802, -0.36207268, 0.21447507, -0.055772606, 0.15652925, -0.045815215, 0.026055578, -0.08619429), target);
	target = MulAdd(e2, MF4x4(0.31203738, 0.1421051, 0.047671713, 0.043899603, -0.0063436944, -0.05302037, 0.10466757, 0.055510703, 0.26608247, -0.5555844, 0.1569081, 0.06456405, 0.3684636, 0.25736332, 0.074449226, -0.44859105), target);
	target = MulAdd(f2, MF4x4(0.17698939, -0.022741819, 0.060476527, 0.25612378, 0.020842008, 0.06931272, -0.019117761, -0.087975, -0.13561797, -0.1362288, 0.29442817, 0.13402307, -0.039556194, -0.019829288, 0.17118609, 0.1278197), target);
	target = MulAdd(g2, MF4x4(-0.31739852, 0.14773282, -0.24623321, 0.108611636, 0.14553224, -0.011245446, 0.12459254, 0.010767416, -0.03386007, -0.21067396, -0.07546396, 0.04937681, -0.1519659, 0.012008841, -0.115991235, 0.10733518), target);
	target = MulAdd(h2, MF4x4(0.03970365, -0.024820864, -0.20029032, 0.29602152, 0.09690361, 0.08654618, -0.012617663, -0.12546124, 0.20103471, 0.00038131204, 0.1211002, -0.1292234, 0.11913651, -0.11322767, -0.01288022, -0.041910112), target);
	target = MulAdd(i2, MF4x4(-0.009281656, 0.1297087, -0.05293133, -0.1246988, -0.022248892, -0.034976568, 0.08893194, -0.11639006, -0.17021456, -0.069115035, 0.17411986, -0.0622714, -0.13591176, -0.052181553, -0.3032676, 0.19398004), target);
	target = MulAdd(a3, MF4x4(0.0135761835, -0.03810734, 0.046213724, 0.010946248, -0.21182157, -0.18424067, 0.0072398814, -0.06510514, 0.25013617, 0.021596389, 0.20208448, 0.06570989, 0.040997196, 0.11164517, 0.0758064, 0.055730976), target);
	target = MulAdd(b3, MF4x4(0.27164775, -0.02738497, -0.07753674, 0.14808752, 0.035788253, -0.1008786, -0.21798207, 0.12514383, 0.12547313, -0.046524163, -0.069985755, -0.05973989, -0.12339831, 0.09729143, 0.062413983, 0.054448497), target);
	target = MulAdd(c3, MF4x4(0.12982179, 0.121222205, -0.012715672, 0.026885295, 0.06398589, -0.050220918, 0.011918637, 0.02942106, -0.049117237, -0.091542035, -0.08816891, 0.014023178, -0.22852097, -0.06725802, -0.058409374, 0.0413034), target);
	target = MulAdd(d3, MF4x4(-0.028438574, -0.17127529, -0.1611554, 0.020367429, -0.10448821, -0.44258052, 0.055850565, -0.1832564, -0.055781726, 0.1632947, -0.3766877, -0.14964445, -0.022300515, -0.15305346, -0.109381065, -0.115521505), target);
	target = MulAdd(e3, MF4x4(-0.26233345, 0.016659187, -0.16647589, 0.187565, 0.012088588, -0.07336387, 0.5486782, 0.3620359, 0.033402268, 0.009075903, -0.11902273, -0.37233996, -0.013799898, -0.008520962, -0.007579324, -0.018678436), target);
	target = MulAdd(f3, MF4x4(0.043346863, 0.10735683, -0.13174124, -0.121098995, -0.0044274325, -0.01888604, 0.12524483, -0.15453935, 0.10062332, -0.039168928, 0.34596562, 0.10575704, -0.04829014, -0.07308859, 0.17704462, 0.009876651), target);
	target = MulAdd(g3, MF4x4(0.16003962, -0.048122417, 0.04131919, -0.14133601, 0.11822638, -0.151548, 0.07274908, -0.253861, 0.11097183, -0.020288134, 0.06425395, -0.046268225, -0.07545768, -0.034767404, -0.111868136, 0.04605878), target);
	target = MulAdd(h3, MF4x4(-0.15711343, -0.04597314, -0.054248903, 0.10960686, -0.197342, 0.017807756, -0.17929378, 0.0669755, -0.14432156, -0.15553066, 0.1257169, -0.10205468, -0.11606485, 0.10992325, -0.026786113, 0.07244239), target);
	target = MulAdd(i3, MF4x4(0.24323255, 0.062938176, -0.10080858, 0.023388771, 0.08971783, -0.121303156, 0.030533563, 0.034501072, -0.070121005, -0.015707897, -0.008001506, 0.089416444, 0.08043049, 0.0414907, -0.051737808, 0.16745205), target);
	target = MulAdd(na1, MF4x4(0.045207355, 0.17343028, 0.038214743, 0.0124091925, 0.06772331, 0.16741976, -0.069976054, -0.09214925, 0.26161152, 0.21708632, -0.074641965, 0.10069592, -0.007335202, 0.0023308273, 0.102324076, -0.04463461), target);
	target = MulAdd(nb1, MF4x4(-0.029115323, 0.09462037, 0.12704706, -0.0028017738, -0.20877443, 0.14758751, 0.11664195, -0.14800303, -0.42558858, -0.18685985, 0.019180436, -0.14385854, 0.13955534, 0.04206586, -0.1564317, -0.14350334), target);
	target = MulAdd(nc1, MF4x4(0.18595266, -0.038219437, 0.04847514, 0.093401335, 0.01025365, -0.009859873, -0.068309866, -0.025273895, 0.38261253, 0.097571604, 0.15044056, 0.012236991, -0.050778836, 0.01948223, -0.09681198, -0.0725782), target);
	target = MulAdd(nd1, MF4x4(-0.15834534, -0.13884525, -0.41221318, -0.14256534, 0.14789878, -0.41153955, -0.10059337, -0.11296314, 0.067884445, 0.08605005, 0.05261639, -0.082988836, -0.121354714, 0.0412593, -0.22355177, -0.33940288), target);
	target = MulAdd(ne1, MF4x4(-0.09894384, 0.011797632, -0.37582433, 0.13686092, -0.114456564, 0.10519318, -0.531876, 0.20149896, -0.40502954, -0.18473613, -0.027613513, -0.1229287, -0.15272947, -0.19752924, -0.009277203, -0.13704798), target);
	target = MulAdd(nf1, MF4x4(-0.16676758, 0.06472998, -0.02979381, 0.028654594, 0.013178715, 0.0011208704, -0.14250684, 0.024595363, -0.0024331086, 0.15876009, -0.18146951, -0.21787827, -0.039896637, 0.022137187, 0.096943565, 0.1463433), target);
	target = MulAdd(ng1, MF4x4(-0.020311443, -0.11862785, 0.024973717, -0.19604981, -0.07155344, -0.21432653, -0.032866854, -0.009850146, 0.20013084, 0.124072924, 0.09021492, 0.13809857, 0.21196319, -0.039707713, 0.18131028, 0.022565559), target);
	target = MulAdd(nh1, MF4x4(0.015458234, 0.19860977, 0.25325814, 0.32606927, -0.10935829, -0.10354393, -0.069758624, 0.016730295, 0.13970691, -0.026566936, -0.055172898, -0.39109713, -0.15070316, 0.07282636, 0.059083372, 0.01492328), target);
	target = MulAdd(ni1, MF4x4(0.016830033, -0.024868606, 0.05206643, -0.09652772, 0.0023192533, 0.008338291, -0.092116445, -0.05736829, 0.18136622, 0.046195503, 0.07144144, -0.0051190723, -0.0750335, -0.06531934, -0.011301411, 0.048583686), target);
	target = MulAdd(na2, MF4x4(0.04040649, -0.14777681, -0.0367592, 0.025550898, 0.0519472, 0.25573796, -0.041682925, 0.092338845, 0.025231685, 0.06609314, 0.020205751, 0.010512631, -0.12048031, -0.063682325, -0.017069822, 0.0103084585), target);
	target = MulAdd(nb2, MF4x4(0.09606588, 0.004819853, -0.010837633, 0.24923539, -0.1006792, 0.13619965, 0.15648063, -0.15472235, 0.074816, 0.061060935, 0.12031998, -0.07962363, -0.019762445, -0.08738595, 0.035822686, 0.19986363), target);
	target = MulAdd(nc2, MF4x4(0.25893176, 0.08258401, -0.08531076, -0.023176214, -0.13755056, 0.14691706, 0.17879073, -0.025577985, -0.28195706, -0.10409214, 0.06793316, -0.06837923, -0.122581184, 0.038157687, -0.265953, 0.19280349), target);
	target = MulAdd(nd2, MF4x4(-0.113429695, 0.057516146, 0.3503902, 0.2084302, 0.095209785, 0.4323637, 0.036503337, -0.37528926, 0.17068225, 0.28902432, 0.08930841, 0.11777051, -0.11170577, -0.030996192, -0.050521877, 0.18092346), target);
	target = MulAdd(ne2, MF4x4(-0.36534205, 0.0657259, -0.036097083, 0.1666858, 0.16353793, -0.055323638, -0.2819786, -0.049529333, -0.06722856, 0.07748645, -0.34818858, -0.15242954, -0.11060249, -0.27319375, 0.15099055, 0.4111536), target);
	target = MulAdd(nf2, MF4x4(0.19415127, 0.17859334, -0.043898348, -0.050272048, 0.16689122, 0.012172907, -0.15645516, 0.14623365, -0.0016135718, -0.0029198902, -0.07367009, 0.18115741, 0.095786035, 0.083239935, 0.12505479, -0.009228445), target);
	target = MulAdd(ng2, MF4x4(0.04141629, -0.09798292, -0.02985331, 0.13288854, 0.0029625932, 0.29050517, -0.14383948, 0.33147556, -0.19490755, -0.08341335, -0.049894527, 0.110408075, -0.185923, 0.12881704, -0.04483314, 0.13530989), target);
	target = MulAdd(nh2, MF4x4(-0.025660308, -0.04277649, -0.044980843, -0.057717774, 0.48945707, 0.16011417, 0.35871124, -0.39541483, -0.0025785516, -0.055724356, 0.119274266, 0.009319305, -0.055367954, 0.07492857, -0.078998685, -0.10131247), target);
	target = MulAdd(ni2, MF4x4(-0.16801779, -0.04895317, -0.21586019, 0.04615353, 0.09740849, 0.030762976, 0.17467776, 0.0120422365, 0.19799858, 0.049733654, -0.024367984, -0.008110729, -0.14235103, 0.03514316, 0.041790742, -0.09109183), target);
	target = MulAdd(na3, MF4x4(-0.26878524, -0.19208838, 0.0124758, -0.13010885, -0.0144377565, -0.015653338, -0.11066211, -0.05679906, -0.114442214, -0.04127417, 0.036079098, -0.04462267, 0.05359463, 0.021078862, -0.017311526, -0.05955371), target);
	target = MulAdd(nb3, MF4x4(-0.42738852, 0.08011972, -0.120668575, -0.11827848, -0.16975085, -0.08911275, -0.076764226, -0.0891852, 0.19799769, -0.068180755, -0.109158665, 0.033777766, 0.23276065, -0.14431503, -0.011219252, -0.04819201), target);
	target = MulAdd(nc3, MF4x4(0.20798479, 0.20048247, -0.056686644, -0.12528493, -0.10292887, 0.008766131, 0.22832678, 0.009819724, 0.014666803, -0.032819923, 0.061416402, -0.052261874, 0.3986435, 0.2218756, 0.04587176, -0.056256443), target);
	target = MulAdd(nd3, MF4x4(0.006675663, -0.2561866, -0.013982697, -0.08625728, 0.12800391, -0.030867307, 0.104720816, 0.14650136, -0.100959726, 0.19566104, 0.057220545, 0.24033053, 0.08719554, 0.018098617, -0.07996598, -0.015701583), target);
	target = MulAdd(ne3, MF4x4(-0.0354034, -0.06831094, 0.42055416, 0.11949096, -0.05344659, -0.1860165, -0.07301184, -0.30869538, -0.1953362, -0.13361058, -0.19827844, 0.078833625, -0.18285057, -0.116519555, 0.029914267, 0.21471292), target);
	target = MulAdd(nf3, MF4x4(-0.12320904, -0.06025351, -0.12828222, -0.11336264, -0.15036534, -0.13378584, -0.18584451, 0.045040403, -0.0675013, 0.04541515, 0.028214835, 0.06800308, -0.21156439, 0.24866186, 0.21416123, -0.040026035), target);
	target = MulAdd(ng3, MF4x4(0.0753877, -0.04430112, 0.15395011, -0.07991276, -0.08305846, 0.055565085, -0.031790998, 0.10893703, -0.057524715, 0.012498553, 0.010330039, 0.12658505, 0.09117975, -0.08158854, 0.26708308, -0.16074498), target);
	target = MulAdd(nh3, MF4x4(-0.29645425, -0.039365437, -0.18364744, 0.16236888, 0.04460683, -0.12283852, 0.23568133, -0.08579463, 0.08793187, -0.057041798, 0.1710201, 0.07482411, -0.13072757, 0.0841477, 0.13957432, 0.1679739), target);
	target = MulAdd(ni3, MF4x4(-0.29222, -0.12256286, 0.02170915, -0.21209532, 0.024504298, 0.02795105, 0.07216779, -0.032558184, 0.14820465, 0.025545621, -0.054377284, 0.071698785, 0.017161021, 0.07144609, 0.11378573, 0.3110773), target);
	conv2d_5_tf[gxy] = target;
	
	target = MF4(0.046015948, 0.05442024, -0.016241902, 0.020935621);
	target = MulAdd(a1, MF4x4(0.064056724, -0.07093631, 0.04779868, -0.02587647, -0.071125306, -0.074813634, -0.068414815, -0.08501005, 0.063606724, 0.034935262, -0.03552888, -0.24985667, 0.11153104, 0.0071351845, 0.19171661, -0.029433867), target);
	target = MulAdd(b1, MF4x4(-0.09995801, -0.09326525, 0.06775157, -0.038214244, -0.10054348, -0.16220573, 0.102754906, 0.071962886, 0.23763078, 0.013961893, 0.015597981, -0.2632074, 0.22045082, 0.071685486, -0.08206874, 0.13892207), target);
	target = MulAdd(c1, MF4x4(-0.01934266, -0.006904077, -0.10715261, 0.17485306, 0.013713242, -0.12410888, -0.007832815, -0.03868287, -0.15776807, -0.2635318, 0.003962659, -0.18496422, -0.11876284, -0.039445885, 0.06629498, 0.22338709), target);
	target = MulAdd(d1, MF4x4(-0.034078594, -0.1805506, -0.025518876, 0.014371885, 0.030084224, -0.014354998, -0.0109806815, -0.20827125, 0.042328708, -0.018653959, 0.059650034, 0.029813247, 0.19455545, -0.113774136, 0.26678622, 0.11695122), target);
	target = MulAdd(e1, MF4x4(-0.023987826, -0.023700913, 0.08644919, -0.1750627, -0.26300937, 0.29743475, 0.1503612, -0.42041445, -0.011562484, -0.3249365, 0.01101664, -0.09328339, -0.09930711, 0.14022289, -0.32576883, 0.026680376), target);
	target = MulAdd(f1, MF4x4(0.06988121, 0.109367564, 0.03402709, -0.17185646, -0.058330853, 0.04632417, -0.010930606, -0.107686765, 0.022882087, -0.08536933, 0.10469813, -0.0737954, 0.16710569, 0.18354355, -0.06688489, -0.019448377), target);
	target = MulAdd(g1, MF4x4(0.019293351, 0.0123047, -0.15684208, 0.054855164, -0.09483187, 0.007899257, -0.07996407, 0.06905782, -0.014882362, -0.17087294, -0.17222148, -0.018799115, 0.042367876, 0.15077937, 0.08865754, -0.10869854), target);
	target = MulAdd(h1, MF4x4(-0.002714694, -0.1375695, -0.1394463, 0.035844512, 0.0085730525, -0.14237584, 0.10053908, 0.07594752, 0.26822913, -0.07813585, 0.10951651, 0.036110748, -0.008980184, -0.018826121, -0.027037399, -0.010021858), target);
	target = MulAdd(i1, MF4x4(-0.028075742, 0.069354035, -0.00936207, -0.07844518, -0.022958742, -0.014102934, 0.031117663, -0.009953486, -0.078456596, -0.0880605, 0.063174024, 0.018579911, -0.0015331954, 0.15179089, 0.003745209, -0.029687254), target);
	target = MulAdd(a2, MF4x4(0.018290054, -0.014245797, -0.17358118, -0.056127924, 0.07084526, 0.03571643, 0.02986269, -0.106873244, -0.048314985, 0.025376959, -0.09932602, 0.011822442, -0.038084786, 0.018717794, -0.18553552, 0.025297863), target);
	target = MulAdd(b2, MF4x4(0.07225246, -0.029364137, 0.011361293, 0.093667194, -0.10645156, 0.0865526, -0.008865539, -0.011799614, -0.21514468, -0.06500061, 0.08485134, 0.23484601, 0.18280883, 0.0598522, -0.13781232, -0.03465513), target);
	target = MulAdd(c2, MF4x4(0.060355596, 0.22477956, 0.01595966, 0.094911985, 0.047214787, 0.042830862, 0.029644348, 0.08143906, 0.02341161, -0.053311694, 0.005260219, 0.04425682, -0.04813383, -0.062679216, 0.019290956, -0.05866764), target);
	target = MulAdd(d2, MF4x4(0.09550533, -0.0281284, 0.18278416, 0.15003324, -0.06580779, 0.041769683, -0.08509133, 0.11734207, 0.049989708, 0.08702604, -0.06486799, 0.063569345, 0.11966632, -0.026014533, 0.03127322, -0.12456593), target);
	target = MulAdd(e2, MF4x4(0.31493753, 0.21239288, 0.23353736, 0.023554513, -0.052986618, -0.0902623, -0.2293566, 0.021443173, -0.5114285, 0.19488071, 0.27000505, -0.1988818, 0.065105505, 0.04904789, -0.0014040003, -0.057719957), target);
	target = MulAdd(f2, MF4x4(-0.1556567, 0.03353479, -0.13394126, -0.017714672, 0.057949618, 0.013137359, 0.058261257, -0.07417554, -0.115135044, 0.17160247, -0.006379533, 0.1885825, -0.22129406, -0.043042038, 0.024051858, 0.17637861), target);
	target = MulAdd(g2, MF4x4(-0.035570182, 0.06328232, 0.016843708, -0.06668748, -0.0056720893, 0.08904317, 0.052788604, -0.0017134451, -0.018143848, 0.040248383, 0.015489914, -0.028669124, 0.008654496, 0.046033252, 0.1050059, 0.0273359), target);
	target = MulAdd(h2, MF4x4(0.022325872, 0.019782262, 0.13855061, -0.095333435, -0.017554015, -0.2036992, -0.17955759, 0.051069602, 0.06197425, -0.1524745, 0.06332084, 0.16367467, 0.012856071, -0.067313105, 0.26188868, 0.014297151), target);
	target = MulAdd(i2, MF4x4(0.24847886, 0.037001565, 0.02012791, -0.08560085, -0.07295144, -0.09001876, 0.09916956, -0.056165274, -0.13455103, 0.025426334, -0.040519975, 0.10362695, 0.1720182, -0.003640278, 0.0108676655, -0.006747253), target);
	target = MulAdd(a3, MF4x4(0.035146076, 0.0751456, 0.074510865, -0.009687164, -0.059647426, 0.11068295, 0.005034347, -0.0094476575, 0.15726817, 0.06547935, -0.003077329, -0.095212325, -0.033507027, 0.044296283, -0.053546224, 0.0667459), target);
	target = MulAdd(b3, MF4x4(0.026525194, -0.10907353, 0.17279102, -0.057787284, 0.0054999366, -0.104058325, 0.04222895, 0.2964297, -0.123814896, -0.12381756, 0.08017246, -0.41211042, -0.09396297, 0.006370269, -0.051667687, 0.1595841), target);
	target = MulAdd(c3, MF4x4(-0.057249974, -0.11224924, 0.04510644, 0.031252895, 0.13152118, -0.061255917, -0.1275758, 0.24736635, 0.15261558, -0.02695863, -0.04368786, 0.077176146, -0.07857015, 0.10112319, -0.09226026, 0.096964024), target);
	target = MulAdd(d3, MF4x4(-0.17078993, 0.007348804, -0.005015552, 0.05306818, 0.055224724, 0.11567237, -0.20675188, -0.003248449, -0.112982295, -0.1578056, -0.46721724, 0.10590234, 0.20476797, 0.10101496, -0.04983351, -0.2430514), target);
	target = MulAdd(e3, MF4x4(0.41511732, -0.14909638, -0.20466527, 0.32993126, 0.034264483, 0.35299808, 0.047212206, 0.22853905, 0.44917694, -0.26854274, 0.28782642, 0.28775322, 0.10682206, -0.036426, -0.05926136, -0.09808791), target);
	target = MulAdd(f3, MF4x4(0.1623692, 0.04208961, -0.12735078, 0.119587936, -0.018460283, 0.01926331, -0.16922039, -0.020692306, -0.23654786, -0.09682156, 0.02356279, 0.292154, -0.12550685, -0.039114326, -0.010045899, 0.009884463), target);
	target = MulAdd(g3, MF4x4(-0.024572646, -0.04915667, -0.0891658, -0.101300426, 0.09721007, -0.027222471, -0.08186617, -0.08800145, 0.16128908, 0.017369738, -0.17755122, 0.030553974, -0.04786194, -0.033306226, -0.11137265, 0.097252734), target);
	target = MulAdd(h3, MF4x4(-0.13219555, 0.14680044, -0.020835813, -0.19928418, -0.17540939, 0.08884416, -0.16007939, -0.2782367, -0.26362786, -0.053185944, 0.21527831, -0.12771867, 0.09537403, 0.06372314, 0.07092338, 0.016300872), target);
	target = MulAdd(i3, MF4x4(0.06020855, -0.027582346, -0.060386427, -0.16418251, 0.13412488, 0.0635046, -0.16844325, -0.031885087, 0.19441758, 0.21037033, -0.21288314, 0.0033019097, 0.07076219, 0.1341822, 0.07913143, 0.025000073), target);
	target = MulAdd(na1, MF4x4(0.1165525, 0.1224346, -0.049421676, -0.09238292, -0.009945548, 0.095751256, -0.09618111, -0.031556837, 0.08579153, -0.11566272, 0.1746714, 0.2033271, 0.21790707, 0.11779413, -0.024555488, -0.06705437), target);
	target = MulAdd(nb1, MF4x4(-0.17143509, 0.076514326, 0.18922825, -0.2367472, -0.0980002, 0.28013328, -0.12218669, -0.043787587, 0.0058879694, -0.024139067, -0.26422662, -0.11571965, 0.14444259, 0.017443683, -0.08909287, -0.2847621), target);
	target = MulAdd(nc1, MF4x4(0.025492875, -0.079289034, 0.08755382, 0.032952707, 0.066548645, 0.047626834, -0.022007272, -0.053937066, -0.005625632, -0.20218278, 0.081909254, 0.10763452, 0.025432698, -0.008357586, 0.052571986, -0.13281691), target);
	target = MulAdd(nd1, MF4x4(0.19026323, -0.03131676, -0.6082668, 0.18015681, -0.08726318, -0.10005449, -0.12227455, 0.09603944, -0.10222641, -0.04765289, -0.25651884, 0.09121576, -0.13599087, 0.004900871, -0.37133986, -0.17672789), target);
	target = MulAdd(ne1, MF4x4(0.45967895, -0.39018512, 0.050611064, 0.03249431, 0.30238965, -0.3105947, 0.06669453, 0.32732725, 0.066052265, 0.49977377, -0.050907653, -0.03348076, 0.029122408, 0.0600764, -0.07822951, 0.20902982), target);
	target = MulAdd(nf1, MF4x4(-0.08013542, 0.10021573, -0.11628576, 0.14346479, 0.057000324, -0.108649634, 0.019887695, 0.103890195, 0.1409188, 0.20089024, -0.102009736, 0.1325033, 0.044806838, -0.05788581, 0.048131753, -0.06652887), target);
	target = MulAdd(ng1, MF4x4(-0.16966644, -0.24639672, 0.019028572, -0.06812002, 0.03262217, 0.09131447, 0.013230795, -0.11368682, -0.06550434, 0.13262247, 0.08878271, -0.08202508, 0.015975898, -0.060910717, 0.06115912, 0.15341121), target);
	target = MulAdd(nh1, MF4x4(0.15634352, 0.17069998, 0.14901571, 0.009626357, -0.06694675, 0.17337729, -0.19245732, -0.053627927, 0.1267725, -0.21431756, -0.07327218, -0.05756576, -0.032537382, -0.02760317, 0.13781238, 0.13548511), target);
	target = MulAdd(ni1, MF4x4(-0.028399123, -0.1360119, 0.2317893, -0.025993945, 0.03924595, -0.042272273, -0.116523296, -0.09528808, 0.1524186, 0.055862464, 0.03739477, -0.09871636, -0.07834257, -0.041219592, 0.04540839, 0.1291419), target);
	target = MulAdd(na2, MF4x4(-0.19614807, -0.09363595, 0.056008626, 0.005871811, 0.16565295, -0.0842474, 0.11023916, 0.13774084, -0.042277314, -0.021777004, -0.03129473, 0.1514441, -0.039998986, 0.071076415, 0.01945138, -0.12146891), target);
	target = MulAdd(nb2, MF4x4(0.06687245, -0.1199503, 0.21189997, 0.35098252, 0.033946924, 0.3198622, -0.22240919, -0.1667172, -0.036933, 0.229118, -0.11569919, -0.16484495, -0.11610055, 0.015235093, 0.3831026, 0.1465072), target);
	target = MulAdd(nc2, MF4x4(0.03791039, 0.018180382, -0.042332668, 0.013624834, -0.18835816, -0.0509036, -0.021141365, -0.004950831, -0.08342777, 0.1390103, 0.015515743, -0.19880094, 0.11614853, 0.06523873, 0.13055101, 0.1372081), target);
	target = MulAdd(nd2, MF4x4(-0.0018500675, 0.18703233, 0.30595052, -0.016893126, -0.22149622, 0.15263912, -0.66434824, -0.02816733, -0.046903886, -0.111711785, 0.24890791, 0.045937214, -0.17543675, 0.0062527983, 0.19804789, 0.017593222), target);
	target = MulAdd(ne2, MF4x4(-0.04760463, 0.05421001, -0.28332436, -0.025446368, 0.21688665, 0.5815682, 0.46906602, -0.05001719, 0.23411441, -0.07280948, -0.13070935, -0.015438214, -0.13005666, 0.1889405, -0.2580563, -0.15314907), target);
	target = MulAdd(nf2, MF4x4(0.12959057, -0.0948774, 0.06675651, -0.17425562, 0.10021383, 0.33856025, -0.31008336, -0.025042048, -0.052502744, 0.029178401, -0.0048839073, 0.038400315, -0.018125525, -0.0767934, 0.094993874, -0.18367463), target);
	target = MulAdd(ng2, MF4x4(-0.022678657, -0.0065315845, 0.06314526, -0.054645326, 0.13771887, 0.046705935, -0.04636017, 0.14018759, -0.04231133, -0.021541214, 0.017565796, 0.003035773, 0.08540473, 0.08129922, 0.11075298, 0.013874024), target);
	target = MulAdd(nh2, MF4x4(0.08197226, -0.0058128256, -0.18930762, -0.036673985, 0.02281235, -0.08467056, -0.2223147, 0.2896992, 0.05395775, 0.11151909, -0.06499754, 0.1251099, -0.03142789, -0.030318923, -0.007785477, -0.04529621), target);
	target = MulAdd(ni2, MF4x4(0.080762245, -0.018930724, -0.20362908, 0.056379218, -0.11373313, -0.12011991, 0.16567366, 0.08657685, 0.044468362, -0.08876271, -0.029667072, 0.035950437, -0.14428492, 0.029389331, 0.05124434, 0.0045285597), target);
	target = MulAdd(na3, MF4x4(-0.02969669, -0.008931901, -0.100618705, -0.052917536, 0.020904265, -0.13654597, -0.06518564, 0.10012143, -0.02225236, -0.0429339, -0.048810348, -0.05469844, 0.08333708, 0.030906782, -0.018940724, -0.026514838), target);
	target = MulAdd(nb3, MF4x4(-0.08655406, 0.114238694, -0.16437472, -0.08736896, 0.127443, 0.06291038, -0.2604087, 0.12457613, 0.24516857, -0.13755949, -0.0030577497, 0.10744015, 0.04641038, 0.05981727, 0.31352815, -0.18235594), target);
	target = MulAdd(nc3, MF4x4(0.008475862, 0.017425679, -0.08991029, -0.12069009, -0.08269583, 0.10742468, -0.014932612, -0.02626661, -0.016236676, -0.005973882, -0.027453009, -0.11351438, 0.047109496, -0.145119, 0.07747088, -0.07215372), target);
	target = MulAdd(nd3, MF4x4(-0.034174602, -0.060812023, -0.0006432491, -0.20983042, 0.046102066, 0.008952892, 0.15442203, -0.10698656, 0.17119479, -0.004389315, 0.3144101, -0.110222265, -0.14246719, 0.045711346, -0.13565831, 0.26117173), target);
	target = MulAdd(ne3, MF4x4(-0.6470008, 0.04084706, -0.051462423, -0.06546568, -0.014792661, -0.15924191, -0.18878494, -0.23083107, -0.24585818, 0.2259637, -0.10123358, -0.19765808, -0.20856747, -0.228083, 0.37406453, 0.08601305), target);
	target = MulAdd(nf3, MF4x4(-0.064584635, -0.21230863, 0.14970647, -0.11542264, 0.036966026, 0.029235318, 0.10329525, 0.044501476, -0.0177942, -0.109035276, 0.043533962, 0.028927831, 0.1558056, 0.10556724, 0.10270152, -0.14039369), target);
	target = MulAdd(ng3, MF4x4(-0.066995785, 0.06306309, -0.13572344, 0.11198968, -0.0037865653, 0.015525267, 0.03302228, 0.11591493, -0.0528039, -0.059212606, 0.082170166, 0.0794709, -0.03251824, -0.026491115, 0.0763021, -0.13832395), target);
	target = MulAdd(nh3, MF4x4(0.006861719, -0.07674664, 0.19552138, 0.041278, -0.04972735, 0.028953623, -0.05129196, 0.102604896, 0.09264856, 0.08714556, 0.14463316, 0.016883003, 0.26475173, -0.089217745, -0.10327653, 0.23053643), target);
	target = MulAdd(ni3, MF4x4(-0.13946633, -0.07468852, 0.00806054, 0.075793736, 0.0094534205, 0.053835806, 0.053700656, -0.09649038, 0.011497834, -0.004986816, -0.019868635, 0.065568306, -0.026551232, -0.35115397, 0.015588715, 0.0713471), target);
	conv2d_5_tf1[gxy] = target;

	target = MF4(0.0016613394, 0.059301294, -0.038810123, 0.10673296);
	target = MulAdd(a1, MF4x4(0.06520908, 0.11980297, 0.017079262, -0.0644185, 0.058950376, 0.31555367, -0.026817605, -0.07509471, -0.12542972, 0.17405558, 0.03727982, -0.116224065, -0.062435534, -0.19364153, -0.026986435, -0.03134909), target);
	target = MulAdd(b1, MF4x4(0.038656387, 0.13447802, -0.16709015, -0.14351036, 0.103892356, 0.016569376, -0.07983408, -0.16095364, -0.11789444, -0.03072205, 0.123185664, -0.10082752, 0.21694018, -0.1617907, -0.011660872, 0.13927431), target);
	target = MulAdd(c1, MF4x4(0.008439822, 0.122972764, -0.016326487, -0.078567974, 0.059017945, 0.06353737, 0.082813956, -0.0949065, -0.08315884, 0.021347238, -0.08931161, -0.16035163, 0.037683185, 0.06533404, -0.028883474, -0.09627357), target);
	target = MulAdd(d1, MF4x4(0.08366899, 0.21790943, -0.22688796, -0.12604184, -0.043983214, 0.1403515, -0.36661214, -0.06573482, -0.0013522038, -0.06833309, -0.01641999, 0.069110356, 0.37018904, 0.10410086, 0.061855968, -0.1666379), target);
	target = MulAdd(e1, MF4x4(-0.2989202, -0.117328055, -0.050487056, -0.061127234, 0.1033415, 0.16767837, 0.18385236, 0.02724901, 0.35696694, -0.25828066, -0.074384004, -0.042253643, -0.41383776, -0.050653316, 0.14413886, 0.32937947), target);
	target = MulAdd(f1, MF4x4(-0.15808704, -0.106030256, 0.28908083, 0.008596225, -0.110294454, -0.08877176, 0.08842803, -0.039414957, 0.20766397, -0.17327146, -0.19335231, -0.061150387, -0.000814753, 0.1034041, -0.009765378, -0.07323427), target);
	target = MulAdd(g1, MF4x4(-0.01879742, -0.044466518, -0.09159235, -0.1501768, -0.0056229457, 0.18997125, 0.08428035, -0.13449019, 0.18263818, -0.10028305, -0.09866498, 0.117869616, -0.012634524, -0.029524704, -0.07730064, 0.00546821), target);
	target = MulAdd(h1, MF4x4(0.15762568, 0.105768956, 0.13892855, 0.00044988963, 0.12257598, -0.01147673, 0.006341714, -0.26212972, 0.40007222, 0.08705139, -0.2118067, 0.026638128, 0.03797633, -0.11589773, 0.0049106814, 0.12900658), target);
	target = MulAdd(i1, MF4x4(-0.121532075, -0.10590698, -0.03897105, -0.0071686152, 0.0033759288, -0.1396647, -0.028675696, -0.015227962, 0.18511333, -0.102051884, -0.016090686, 0.059021857, -0.11331271, -0.11874948, 0.018710922, 0.017408015), target);
	target = MulAdd(a2, MF4x4(-0.12550953, 0.16510391, 0.10619754, -0.016266964, -0.019227408, -0.18954511, -0.109888494, 0.016605422, -0.0005352285, 0.044191238, -0.088420294, 0.009006945, -0.022495952, 0.048431057, -0.020784441, 0.010173064), target);
	target = MulAdd(b2, MF4x4(0.16963533, 0.18744309, 0.21297795, 0.08332983, -0.023056686, -0.07087108, -0.036333352, -0.015268741, -0.07492767, -0.045910314, 0.21631542, -0.16564575, 0.02388003, 0.13383305, -0.039016947, 0.0631532), target);
	target = MulAdd(c2, MF4x4(0.02557174, 0.08842321, 0.16087292, -0.023776071, 0.031170124, 0.066140614, 0.05342162, -0.013030745, 0.124961995, -0.22359067, -0.036988057, 0.13611913, -0.1263602, -0.16664241, 0.01858248, 0.0013771311), target);
	target = MulAdd(d2, MF4x4(0.015695665, 0.015101046, 0.17278792, -0.03986969, 0.14098491, -0.024497505, 0.21574442, 0.04450794, -0.10986037, 0.16416681, -0.09933916, 0.14197138, 0.0015567777, -0.0047904793, -0.21008217, 0.14554296), target);
	target = MulAdd(e2, MF4x4(-0.31723288, -0.11801757, 0.54204303, 0.21924974, -0.063086554, 0.031983662, -0.044489764, -0.044983335, -0.19877149, -0.34737584, 0.14496867, 0.24102491, -0.12645286, -0.12267188, 0.108755745, -0.042033415), target);
	target = MulAdd(f2, MF4x4(-0.12381552, 0.21796867, 0.047182925, 0.13479555, -0.07008901, 0.030664185, 0.10611406, -0.109855235, -0.035448074, 0.11677155, -0.21266608, 0.13169904, 0.031983715, 0.023444392, -0.17469533, 0.17422527), target);
	target = MulAdd(g2, MF4x4(0.022972934, -0.00795407, 0.05136999, 0.035493083, -0.17333633, -0.027870687, 0.02908348, 0.053750556, -0.014127204, 0.03970615, 0.04342455, 0.124589466, 0.16470553, 0.06732464, 0.043155663, -0.03983377), target);
	target = MulAdd(h2, MF4x4(-0.032124814, 0.032697737, 0.14967397, 0.0065929573, 0.1047251, 0.039273106, 0.08134817, -0.003973153, 0.040370148, -0.18200004, 0.089256786, -0.09854591, -0.0060806563, -0.1029578, -0.091431744, 0.10011842), target);
	target = MulAdd(i2, MF4x4(-0.037540972, 0.02491563, 0.18000527, -0.05821429, 0.05302547, -0.104025975, -0.10679022, -0.030143606, 0.0072812764, 0.06054551, -0.1211288, 0.04456214, 0.023387795, -0.003822218, 0.0058639925, -0.022066886), target);
	target = MulAdd(a3, MF4x4(0.06184228, -0.056854323, -0.040505715, 0.06577085, 0.09438042, 0.08642222, -0.070353776, 0.053747497, -0.1001193, 0.1620346, 0.0022546488, -0.084673025, -0.063821726, -0.06516542, 0.021665785, -0.01931425), target);
	target = MulAdd(b3, MF4x4(0.07393532, -0.030919692, -0.05093964, 0.041760188, 0.20542595, -0.14245859, -0.08730749, 0.066625066, -0.030148488, 0.04094324, -0.17595454, -0.16575092, -0.015094979, 0.08206526, 0.1878202, 0.030275505), target);
	target = MulAdd(c3, MF4x4(0.04596692, 0.24388434, 0.075821444, -0.11463937, 0.04743361, 0.073697835, -0.12414068, -0.13001998, -0.016750317, -0.115090236, 0.029251577, -0.00256914, 0.01848034, 0.020216811, -0.050685663, 0.15878099), target);
	target = MulAdd(d3, MF4x4(-0.07033339, -0.10033772, 0.13496423, 0.05642528, -0.035572313, -0.17283621, -0.116152726, 0.05493664, 0.09753486, -0.03360219, -0.0357413, -0.18149517, -0.121751696, -0.07030741, 0.013601298, 0.033133104), target);
	target = MulAdd(e3, MF4x4(0.09432236, -0.09759138, -0.119828485, -0.14183357, -0.5797675, -0.07471831, 0.04211549, 0.26251101, 0.5751412, 0.5531362, -0.20901033, -0.44464877, -0.1050692, 0.35440886, -0.06443669, -0.27186042), target);
	target = MulAdd(f3, MF4x4(-0.069436476, 0.10357919, 0.09300722, -0.0992018, -0.15164262, 0.12421031, -0.20876148, -0.18715572, 0.020070476, -0.06525974, 0.0032806133, -0.007204605, -0.047449, 0.23941353, 0.074678384, 0.059585877), target);
	target = MulAdd(g3, MF4x4(0.01769955, -0.010905215, -0.048443984, 0.07100768, 0.037357494, -0.014723261, -0.15591852, 0.10612296, -0.13143727, -0.029275576, 0.021462034, 0.011848447, 0.08220801, 0.15958358, -0.022226475, -0.06178906), target);
	target = MulAdd(h3, MF4x4(-0.043331016, -0.060601693, -0.13266426, 0.2410773, -0.09411715, -0.054481134, -0.010012133, 0.07868362, -0.03723713, -0.32002482, -0.19103771, 0.024575114, 0.12048997, -0.33372483, -0.13358098, -0.11907925), target);
	target = MulAdd(i3, MF4x4(-0.06852358, -0.025769785, 0.16419932, 0.028622756, 0.07738885, 0.19097409, 0.030017732, 0.08942453, -0.103945315, 0.27710587, 0.07438472, 0.04317445, 0.07197963, 0.23000222, -0.025056513, 0.09491253), target);
	target = MulAdd(na1, MF4x4(-0.14467122, -0.010201622, 0.0076316656, -0.07795532, -0.062397595, -0.20432428, -0.008252111, 0.0849895, 0.16180839, -0.12278075, -0.011521546, 0.03288935, -0.14986265, 0.06768003, 0.18093173, 0.036510453), target);
	target = MulAdd(nb1, MF4x4(-0.13757493, -0.022130862, -0.14063741, -0.15224035, -0.16418923, 0.02701367, 0.034051962, -0.02580273, -0.21267697, 0.1778992, -0.11384793, -0.14056513, -0.12628116, -0.119479865, -0.08586524, -0.042770755), target);
	target = MulAdd(nc1, MF4x4(0.034048863, 0.043504484, 0.14368454, 0.0682472, -0.1318885, -0.09097908, -0.022142543, 0.045874257, -0.00010490822, -0.35216293, 0.04821174, 0.1037435, 0.11491783, -0.03074008, -0.15504418, 0.002481289), target);
	target = MulAdd(nd1, MF4x4(0.15464644, 0.13155764, -0.025967255, -0.122360244, 0.0050367275, -0.030188441, 0.26694667, 0.09298438, 0.12436595, 0.1894544, 0.097955175, -0.1976165, 0.17701727, -0.39169946, 0.07254687, 0.18344238), target);
	target = MulAdd(ne1, MF4x4(0.7450363, -0.021375138, 0.1908325, -0.43873882, 0.32581338, 0.06003156, -0.16481178, -0.097786136, 0.07664747, 0.083530955, -0.19303781, -0.2208752, 0.2954345, -0.020337705, 0.14045238, -0.19992891), target);
	target = MulAdd(nf1, MF4x4(-0.13618276, 0.1301855, 0.07342773, -0.28985927, 0.1162901, -0.20089008, -0.036014035, 0.13122658, -0.121863954, 0.012138018, 0.17843567, 0.03828356, 0.048146408, 0.2968513, 0.069999285, -0.130018), target);
	target = MulAdd(ng1, MF4x4(0.21915652, 0.05540849, 0.10738131, 0.07626957, -0.13932791, -0.26324788, -0.024981115, 0.100521, -0.3060648, -0.21207786, 0.1482194, -0.114556216, -0.09286606, 0.01816721, 0.018395979, -0.03223082), target);
	target = MulAdd(nh1, MF4x4(0.007953473, 0.41586113, -0.12301476, -0.0714516, -0.18429835, 0.05822646, 0.003684946, 0.18452546, 0.07199102, -0.038058747, -0.11968186, 0.057275392, 0.018090919, 0.15575454, 0.14568369, -0.008162466), target);
	target = MulAdd(ni1, MF4x4(0.0046069925, -0.14948042, -0.06077474, -0.18606511, -0.046001855, 0.072694264, 0.0853064, -0.07509439, -0.16638888, 0.008207148, -0.06407435, 0.0832239, 0.11806991, 0.08564391, -0.09793387, -0.009962631), target);
	target = MulAdd(na2, MF4x4(0.17163257, 0.17926122, 0.08094341, 0.01562118, 0.08006863, 0.16360049, 0.061501157, 0.015167974, 0.038785663, -0.024147237, 0.04187129, 0.020464495, 0.0043754554, -0.12979902, -0.116078086, 0.02519678), target);
	target = MulAdd(nb2, MF4x4(0.1390449, -0.31678367, -0.05487266, 0.028750261, -0.2432485, 0.4501461, 0.16770184, -0.21504217, -0.113885716, 0.24819264, 0.10844277, 0.16599967, 0.07485992, -0.15028708, -0.050178476, 0.058082305), target);
	target = MulAdd(nc2, MF4x4(0.025873372, 0.0873282, -0.00070206827, 0.038967356, -0.12720318, -0.036212232, 0.37016478, 0.08430346, -0.18743254, -0.075341664, -0.027113464, 0.0478065, 0.30386332, 0.03854462, -0.08687961, 0.043612193), target);
	target = MulAdd(nd2, MF4x4(-0.1514979, 0.20321548, -0.12928946, -0.08803361, 0.062216565, -0.26570085, 0.26420683, -0.0777953, 0.008385508, 0.112346895, -0.09958432, -0.1247562, 0.114825696, 0.12035607, 0.06491033, -0.036797147), target);
	target = MulAdd(ne2, MF4x4(-0.24817157, 0.12276732, -0.21231028, 0.23803027, 0.43308944, 0.39496094, 0.15699469, 0.12618075, -0.037870817, 0.13224195, 0.007822175, -0.13612692, -0.07763684, -0.33213237, -0.0121766785, 0.16685596), target);
	target = MulAdd(nf2, MF4x4(0.038585283, 0.04452951, 0.050363973, 0.027282275, -0.08253728, -0.06062145, 0.25581127, 0.04032097, 0.05333845, 0.023140023, -0.009572385, 0.16059966, -0.11572228, 0.044278048, 0.09749187, -0.15032573), target);
	target = MulAdd(ng2, MF4x4(-0.03934602, -0.02766789, 0.026940307, 0.012599063, -0.31656685, 0.23716804, 0.44959545, -0.22446568, -0.054772135, -0.12735057, 0.057908695, -0.13251308, -0.08269784, 0.11659682, 0.098460965, 0.026333362), target);
	target = MulAdd(nh2, MF4x4(-0.034531243, -0.034659956, 0.05089446, -0.039471556, -0.30950317, 0.10350312, 0.11603813, 0.08672152, -0.07706643, 0.29062438, 0.16422673, 0.074333824, 0.15247595, 0.068041846, -0.05291157, -0.15924777), target);
	target = MulAdd(ni2, MF4x4(-0.008430657, 0.1884767, 0.15917906, 0.0063428413, -0.07987644, -0.04325211, -0.011584678, -0.010605869, -0.061187085, -0.09864619, -0.003040298, -0.08468758, 0.07886262, -0.14624445, -0.16320829, -0.01452985), target);
	target = MulAdd(na3, MF4x4(-0.08527653, -0.23416738, 0.06975244, 0.05253521, 0.061039444, -0.00083986257, 0.030380005, -0.023494298, -0.043048684, 0.14088461, 0.2651013, -0.069660574, -0.016013842, -0.051780187, -0.012583422, -0.033116736), target);
	target = MulAdd(nb3, MF4x4(-0.0006501486, -0.30294704, -0.22532716, 0.05011193, 0.065113634, 0.016704703, -0.045390636, 0.04377115, 0.11699081, 0.08135687, 0.020165889, 0.19826801, -0.018285288, -0.08564773, -0.26595154, -0.038110998), target);
	target = MulAdd(nc3, MF4x4(0.039095376, -0.0013404419, 0.012190645, 0.09428582, -0.11419318, 0.06917013, 0.034134097, 0.06616537, 0.03412512, 0.19301844, -0.055202305, 0.04042837, 0.04970565, -0.038846236, 0.13749482, -0.10204081), target);
	target = MulAdd(nd3, MF4x4(0.11721501, -0.12578778, 0.3620872, 0.21225488, -0.016926143, 0.006788099, -0.098553024, 0.07850037, 0.011090844, 0.029607147, -0.10133182, 0.09209217, -0.022987554, -0.20880799, 0.11736945, 0.051316652), target);
	target = MulAdd(ne3, MF4x4(0.07336128, 0.12248782, 0.15166189, 0.19264354, 0.04438999, 0.14751169, -0.20144647, -0.13824841, -0.007747583, -0.16739956, 0.06877802, 0.35830194, 0.26836118, 0.16978757, 0.020257233, -0.13465263), target);
	target = MulAdd(nf3, MF4x4(0.13214944, -0.06876062, 0.23750784, -0.021269983, 0.024918383, -0.26376384, 0.045127794, 0.13623215, 0.006213376, -0.08169226, -0.073229134, -0.007930807, -0.044477753, -0.0316362, 0.18907334, 0.11666457), target);
	target = MulAdd(ng3, MF4x4(-0.043125346, 0.11734928, -0.075487934, 0.045608267, 0.0019688043, 0.050239112, 0.04037272, -0.05889949, 0.06669761, 0.12751873, 0.05863783, 0.0125279, -0.089946836, -0.12018046, -0.18921909, 0.023329671), target);
	target = MulAdd(nh3, MF4x4(0.2132003, -0.31702018, -0.13358426, -0.08583953, 0.0059259925, -0.094208315, -0.11922049, -0.099796474, 0.09348341, 0.32579756, 0.1124768, -0.049808096, -0.23310517, 0.26437998, 0.11376541, 0.13568696), target);
	target = MulAdd(ni3, MF4x4(0.20872836, -0.18229747, -0.24334186, 0.055828214, -0.05096774, -0.038215697, -0.15330918, 0.010210672, 0.018509107, 0.06662855, 0.029773839, 0.050827213, 0.18775174, -0.24382128, -0.28635338, 0.019148426), target);
	conv2d_5_tf2[gxy] = target;
}

//!PASS 7
//!DESC Conv-4x3x3x24
//!IN conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2
//!OUT conv2d_6_tf, conv2d_6_tf1, conv2d_6_tf2
//!BLOCK_SIZE 8
//!NUM_THREADS 64

void Pass7(uint2 blockStart, uint3 threadId) {
	uint2 gxy = Rmp8x8(threadId.x) + blockStart;
	uint2 inputSize = GetInputSize();
	if (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {
		return;
	}

	float2 inputPt = GetInputPt();
	float2 pos = (gxy + 0.5f) * inputPt;

	// [ a, d, g ]
	// [ b, e, h ]
	// [ c, f, i ]
	MF4 a1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e1 = conv2d_5_tf.SampleLevel(sam, pos, 0);
	MF4 f1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na1 = max(-a1, 0);
	MF4 nb1 = max(-b1, 0);
	MF4 nc1 = max(-c1, 0);
	MF4 nd1 = max(-d1, 0);
	MF4 ne1 = max(-e1, 0);
	MF4 nf1 = max(-f1, 0);
	MF4 ng1 = max(-g1, 0);
	MF4 nh1 = max(-h1, 0);
	MF4 ni1 = max(-i1, 0);

	a1 = max(a1, 0);
	b1 = max(b1, 0);
	c1 = max(c1, 0);
	d1 = max(d1, 0);
	e1 = max(e1, 0);
	f1 = max(f1, 0);
	g1 = max(g1, 0);
	h1 = max(h1, 0);
	i1 = max(i1, 0);

	MF4 a2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e2 = conv2d_5_tf1.SampleLevel(sam, pos, 0);
	MF4 f2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na2 = max(-a2, 0);
	MF4 nb2 = max(-b2, 0);
	MF4 nc2 = max(-c2, 0);
	MF4 nd2 = max(-d2, 0);
	MF4 ne2 = max(-e2, 0);
	MF4 nf2 = max(-f2, 0);
	MF4 ng2 = max(-g2, 0);
	MF4 nh2 = max(-h2, 0);
	MF4 ni2 = max(-i2, 0);

	a2 = max(a2, 0);
	b2 = max(b2, 0);
	c2 = max(c2, 0);
	d2 = max(d2, 0);
	e2 = max(e2, 0);
	f2 = max(f2, 0);
	g2 = max(g2, 0);
	h2 = max(h2, 0);
	i2 = max(i2, 0);

	MF4 a3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);
	MF4 b3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);
	MF4 c3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);
	MF4 d3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);
	MF4 e3 = conv2d_5_tf2.SampleLevel(sam, pos, 0);
	MF4 f3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);
	MF4 g3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);
	MF4 h3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);
	MF4 i3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);

	MF4 na3 = max(-a3, 0);
	MF4 nb3 = max(-b3, 0);
	MF4 nc3 = max(-c3, 0);
	MF4 nd3 = max(-d3, 0);
	MF4 ne3 = max(-e3, 0);
	MF4 nf3 = max(-f3, 0);
	MF4 ng3 = max(-g3, 0);
	MF4 nh3 = max(-h3, 0);
	MF4 ni3 = max(-i3, 0);

	a3 = max(a3, 0);
	b3 = max(b3, 0);
	c3 = max(c3, 0);
	d3 = max(d3, 0);
	e3 = max(e3, 0);
	f3 = max(f3, 0);
	g3 = max(g3, 0);
	h3 = max(h3, 0);
	i3 = max(i3, 0);

	MF4 target = MF4(-0.12422661, 0.036567487, -0.031888038, -0.011536189);
	target = MulAdd(a1, MF4x4(0.063551076, -0.16613434, 0.12519288, 0.2613413, 0.026815815, 0.07070773, -0.021043811, -0.0669755, -0.19316983, -0.19476847, -0.15389214, -0.009875319, -0.0604898, -0.114369385, 0.027538, 0.13774374), target);
	target = MulAdd(b1, MF4x4(-0.37544233, 0.12914102, 0.1366593, 0.31378758, 0.013987432, -0.06746779, -0.0083432635, 0.18277366, 0.09763598, 0.37610903, -0.04690116, -0.012697733, 0.26701328, -0.28395116, 0.20111044, -0.14729187), target);
	target = MulAdd(c1, MF4x4(-0.11672882, -0.07698176, 0.128088, 0.04008766, 0.10915507, -0.06849285, 0.10052956, -0.043884028, 0.07211199, -0.10226781, -0.022282045, 0.23409745, -0.12000992, 0.24038276, -0.09234301, 0.0005270855), target);
	target = MulAdd(d1, MF4x4(-0.09490642, -0.015582241, -0.19492888, -0.32142976, -0.08206514, -0.015905589, -0.058852483, 0.07062659, 0.26403823, 0.3431253, -0.026066927, -0.3181394, 0.08491617, 0.119145595, -0.13182211, 0.11299775), target);
	target = MulAdd(e1, MF4x4(-0.46511695, 0.041131947, -0.033913054, -0.02365193, -0.05553107, -0.07035273, -0.054731946, 0.14872038, 0.6574225, 0.43335545, -0.104082294, 0.07509184, -0.17075175, 0.45012367, -0.23016582, 0.11691375), target);
	target = MulAdd(f1, MF4x4(-0.11270771, 0.16805078, 0.06826135, 0.0033254998, -0.024538545, 0.09819631, 0.1497868, 0.07361046, 0.44126564, -0.08262802, -0.093892835, -0.017575772, 0.201439, -0.16137156, 0.020603918, -0.11584951), target);
	target = MulAdd(g1, MF4x4(-0.05802347, -0.008502925, 0.040704407, -0.018153232, 0.13748057, -0.01657812, 0.051693555, 0.049377594, 0.055863917, 0.033657834, -0.07277932, -0.090057924, -0.020979507, 0.045863025, -0.07975761, -0.051979877), target);
	target = MulAdd(h1, MF4x4(0.04014975, -0.08892218, 0.010484573, 0.10302432, 0.15378693, 0.08408517, 0.2501461, -0.24654758, 0.098134525, 0.02121331, -0.12720452, 0.18055904, -0.095695384, 0.07188886, -0.06675107, 0.024970558), target);
	target = MulAdd(i1, MF4x4(0.0036642263, -0.06313773, -0.037577838, -0.08352694, 0.015351579, -0.26856104, 0.006624689, 0.13869932, -0.17476316, 0.18687174, -0.10394873, 0.13418272, -0.079220034, 0.022169832, -0.031236127, -0.0339237), target);
	target = MulAdd(a2, MF4x4(-0.08630612, -0.0337143, -0.23126788, 0.06343892, 0.033023622, -0.03573692, 0.038431164, 0.13653663, -0.038872983, 0.0037933413, -0.04555905, 0.08925922, -0.13711931, -0.09402758, -0.010433323, 0.063199304), target);
	target = MulAdd(b2, MF4x4(-0.097609736, -0.078787506, -0.08567856, 0.013807229, 0.07355257, -0.06374568, 0.14115064, -0.044682432, 0.14670128, 0.18986551, -0.15207475, 0.06219552, 0.06450654, 0.124214396, 0.009615842, 0.10263959), target);
	target = MulAdd(c2, MF4x4(0.055290207, -0.040181328, -0.04919303, 0.020920292, 0.012198339, -0.06364409, -0.07055407, 0.036359143, 0.05182031, 0.23724687, 0.08679922, -0.18439333, 0.033763815, -0.011830226, 0.032295715, -0.07224721), target);
	target = MulAdd(d2, MF4x4(-0.018177355, 0.05537294, 0.09365121, -0.11162771, 0.032960154, -0.3631022, 0.020872682, 0.026997598, 0.008251562, 0.0121242, 0.08893235, -0.2972536, 0.31769535, 0.21222967, 0.26210263, -0.07804949), target);
	target = MulAdd(e2, MF4x4(-0.09234649, -0.2313192, 0.2007695, -0.16570407, 0.4998518, 0.5021211, -0.23046456, 0.4675977, -0.04418793, 0.15888585, 0.634594, 0.08088828, 0.72703683, -0.10338289, 0.39535734, 0.08798907), target);
	target = MulAdd(f2, MF4x4(-0.07732275, 0.03470451, -0.0053107208, 0.12719902, 0.059666194, -0.09585871, 0.1990709, 0.071376435, 0.3475797, -0.22143288, -0.20879894, -0.07166567, 0.12787548, -0.02100069, 0.19628522, 0.30982283), target);
	target = MulAdd(g2, MF4x4(-0.0066751963, -0.10570687, -0.040173814, -0.111826494, 0.12028746, -0.011818079, 0.100319766, 0.050529975, -0.031993337, -0.0011481771, 0.028475156, 0.035728168, -0.104264215, -0.1322591, -0.0906199, 0.18882063), target);
	target = MulAdd(h2, MF4x4(0.08835854, 0.07846953, -0.00819189, 0.016579857, -0.12914272, 0.07969864, -0.11249944, 0.09885958, 0.05813271, 0.034933876, -0.10564021, 0.039766613, -0.34965426, 0.22660616, -0.37486964, -0.12369291), target);
	target = MulAdd(i2, MF4x4(0.11392956, 0.030622995, -0.04730621, -0.015045563, 0.085018255, -0.007865196, -0.025682064, -0.133319, -0.054862365, 0.062044714, 0.05505255, 0.16293961, 0.016092334, -0.02829063, 0.022702925, -0.12809299), target);
	target = MulAdd(a3, MF4x4(0.02367039, -0.10482778, -0.08608669, -0.062093236, 0.011747762, 0.022175042, 0.0071996297, -0.11276182, 0.028712617, 0.04126311, -0.0038132998, -0.1115989, -0.083056234, -0.009934547, -0.040698178, -0.12683636), target);
	target = MulAdd(b3, MF4x4(-0.03936176, 0.013684187, -0.010472024, -0.10460055, 0.023214165, -0.010684623, 0.1418631, -0.09054893, -0.12086315, 0.17628363, -0.09017983, 0.058750905, -0.017493812, -0.017450733, 0.026728105, 0.00935395), target);
	target = MulAdd(c3, MF4x4(-0.027332857, 0.0099790655, -0.08163504, 0.17689545, 0.0068078213, -0.023418542, 0.008682474, 0.02548335, -0.094120994, -0.06916872, -0.010798773, 0.08256571, 0.054553654, -0.06724611, 0.10275257, -0.03569369), target);
	target = MulAdd(d3, MF4x4(0.08478009, 0.24308196, -0.05788887, -0.30866814, -0.01677214, -0.13036685, 0.114544466, 0.13763347, -0.1287353, -0.106372125, 0.06294474, -0.017131003, -0.036178716, 0.042261317, -0.04916793, 0.22008154), target);
	target = MulAdd(e3, MF4x4(0.113098085, -0.16627797, 0.2243724, 0.39611307, -0.14763622, -0.08843169, -0.041247193, 0.02559566, 0.26896805, -0.05941676, 0.081289455, -0.03463428, -0.32648194, -0.01743883, 0.14692393, -0.1419451), target);
	target = MulAdd(f3, MF4x4(-0.08624417, 0.039859742, -0.1319016, -0.13784388, -0.037280608, 0.04094322, -0.09264864, -0.14406647, 0.08943151, -0.012913666, 0.07797073, -0.011788144, 0.00781559, 0.09687341, -0.075485185, 0.029234888), target);
	target = MulAdd(g3, MF4x4(-0.03461818, -0.0578239, -0.11940533, 0.19817612, -0.06190108, 0.009414874, 0.00055699307, -0.032922342, 0.09611396, 0.017270042, 0.031782333, 0.053475976, -0.06507406, -0.11098162, 0.021986434, -0.15281019), target);
	target = MulAdd(h3, MF4x4(0.03300026, 0.14729956, -0.11484497, -0.09993908, 0.049616348, -0.075125255, 0.0945234, -0.071549594, -0.12840901, 0.17766954, -0.19627832, 0.115563445, 0.021435678, -0.13213344, 0.106521055, -0.045743156), target);
	target = MulAdd(i3, MF4x4(-0.07923801, -0.10016722, -0.15136302, -0.09258758, 0.041234676, 0.03441316, 0.112843126, 0.06979639, -0.10960315, 0.024976972, -0.11591057, 0.0046735895, 0.043591797, -0.1226487, 0.06454461, 0.1111232), target);
	target = MulAdd(na1, MF4x4(-0.029166799, 0.024781128, -0.04604433, -0.17043193, 0.04155139, -0.024739308, -0.00026802288, -0.07082753, 0.0899422, 0.09071587, 0.06616202, 0.06050842, -0.05764436, 0.10596236, 0.02040071, -0.17497559), target);
	target = MulAdd(nb1, MF4x4(-0.09035089, 0.0659, -0.14361084, -0.021721302, 0.016794743, 0.09347604, 0.1380016, -0.25160387, 0.17140736, 0.29569083, 0.121337526, -0.26241425, 0.06574208, -0.08532672, 0.09675172, 0.061919414), target);
	target = MulAdd(nc1, MF4x4(0.0777134, 0.021917641, 0.08300268, 0.025749028, -0.109934434, -0.25188968, -0.0045595216, -0.05616794, 0.028348224, -0.020761484, 0.06998775, -0.21368878, 0.03502115, 0.084822185, -0.053608585, 0.0076402165), target);
	target = MulAdd(nd1, MF4x4(-0.019782236, -0.02927372, 0.08717013, 0.073102064, 0.00052576384, -0.015302635, 0.0621273, -0.00017607084, -0.029963085, -0.13835284, 0.11283739, 0.112313755, -0.01647687, -0.07729588, 0.04615463, 0.24352066), target);
	target = MulAdd(ne1, MF4x4(0.021634975, -0.23471251, 0.2007633, -0.07243054, -0.34169427, -0.3459408, -0.49702102, 0.062072285, 0.29644236, 0.0050523616, -0.27118742, -0.06865384, 0.101680025, 0.38019192, 0.13146457, 0.027077101), target);
	target = MulAdd(nf1, MF4x4(-0.013608211, -0.077774465, -0.045174483, -0.023265246, 0.1321979, 0.3753417, 0.16121203, 0.019047128, 0.064994924, 0.052409865, 0.10563419, -0.00085220096, 0.11251547, -0.10566402, 0.0028090205, -0.10063887), target);
	target = MulAdd(ng1, MF4x4(0.046679504, 0.058594946, -0.06533285, -0.15811534, -0.07416471, 0.06988486, -0.04314425, 0.009497584, -0.009757547, -0.038767483, 0.17787239, 0.077745095, -0.0020354164, -0.058167685, 0.105233066, -0.06689146), target);
	target = MulAdd(nh1, MF4x4(0.12626402, 0.039072312, 0.10418004, -0.07277218, -0.02922791, -0.19852047, 0.24927165, -0.18751998, -0.08083378, -0.14444499, -0.058351975, -0.02419644, 0.12217534, -0.048507757, -0.08333956, 0.00162865), target);
	target = MulAdd(ni1, MF4x4(-0.029149413, -0.023871707, 0.022741226, 0.10378588, -0.0073062726, 0.036854163, -0.1929113, -0.12620242, -0.03716381, -0.018090466, 0.10779782, -0.019924738, 0.068666615, 0.07481716, 0.10826988, 0.14435701), target);
	target = MulAdd(na2, MF4x4(-0.107568674, 0.12906614, -0.11304603, -0.07186676, 0.12917557, 0.04622498, 0.052623924, 0.027181726, 0.03726036, -0.05536048, -0.056134712, 0.0692713, -0.0931205, -0.013530341, -0.079496436, 0.07122584), target);
	target = MulAdd(nb2, MF4x4(0.21643913, 0.008973324, 0.2473282, -0.22151545, 0.10534174, 0.014311179, 0.12648374, -0.33117563, -0.115273096, -0.07306515, -0.019514188, 0.03442445, 0.02174929, 0.15782723, -0.15441503, -0.024714287), target);
	target = MulAdd(nc2, MF4x4(-0.09689197, 0.019095143, -0.034944948, -0.20796263, 0.06224929, -0.0023227853, 0.07867864, -0.046337705, -0.097502016, -0.0011326018, -0.047669414, 0.07279011, -0.04423047, 0.014121719, -0.026950205, 0.14154369), target);
	target = MulAdd(nd2, MF4x4(0.11617495, 0.46741408, 0.07166562, -0.3171231, -0.06699714, 0.12959749, 0.10611542, -0.08962664, -0.055559576, 0.08383856, -0.07885361, -0.076587684, -0.0048291516, -0.04309975, 0.045905527, 0.036698442), target);
	target = MulAdd(ne2, MF4x4(0.0036613978, -0.03133137, -0.09741661, 0.4476952, -0.05623356, -0.5347433, -0.15121926, -0.62327516, -0.34650013, -0.3848976, -0.1020635, 0.12372888, -0.17733924, -0.3116026, -0.26149738, -0.12756832), target);
	target = MulAdd(nf2, MF4x4(-0.18341129, 0.27638572, 0.18640736, 0.07301684, 0.0031105333, 0.10374691, -0.118262894, -0.12854561, -0.07307097, -0.0043694526, -0.103828765, 0.0033327888, -0.11450939, -0.036062073, -0.08388783, -0.18569045), target);
	target = MulAdd(ng2, MF4x4(-0.06513565, -0.0906451, -0.07992863, 0.1555351, 0.053517826, 0.059623975, -0.04589495, -0.06759139, 0.041854616, -0.022462321, -0.03875089, 0.099266365, -0.04334954, -0.011625454, -0.03120097, -0.028311051), target);
	target = MulAdd(nh2, MF4x4(-0.2698161, 0.4855855, 0.29649052, 0.08579708, -0.17665233, 0.11236429, 0.17814405, 0.2936427, 0.0014580752, -0.01460852, 0.12992013, -0.06554696, 0.08688421, 0.016707266, -0.035805132, -0.21390212), target);
	target = MulAdd(ni2, MF4x4(0.087546945, -0.08082606, 0.026020724, -0.22158769, 0.079808585, 0.008027633, 0.17506911, 0.24715161, -0.089454755, -0.12723146, -0.014873311, -0.080931105, -0.037702024, 0.069683395, 0.03398877, 0.050660603), target);
	target = MulAdd(na3, MF4x4(0.18083133, 0.072747, 0.026843961, 0.060125593, -0.0028814252, 0.055027924, -0.23592432, -0.3128924, 0.07353004, -0.040734287, 0.063891344, 0.12827826, 0.035035152, -0.07543958, 0.084599234, 0.13021721), target);
	target = MulAdd(nb3, MF4x4(0.063158885, 0.08223479, 0.069820456, 0.021643702, 0.07788084, -0.078388534, 0.13722488, 0.25833505, -0.10396639, 0.0041446807, 0.023278937, 0.22537926, 0.17745169, 0.22081025, -0.09535902, -0.12220001), target);
	target = MulAdd(nc3, MF4x4(-0.05432123, 0.087425314, 0.018276695, -0.124169916, -0.00543602, 0.12574154, -0.06011572, 0.04701218, -0.10479224, 0.032153737, -0.06034692, 0.16422245, -0.13862014, -0.06484846, -0.064395554, 0.20665741), target);
	target = MulAdd(nd3, MF4x4(-0.11319914, 0.18695734, 0.3806953, -0.069110036, -0.24979821, 0.26608357, 0.45578855, -0.37055442, 0.08747221, 0.11386838, -0.09471413, -0.17466134, 0.20953615, 0.20999484, 0.12287149, -0.41018328), target);
	target = MulAdd(ne3, MF4x4(0.5564517, -0.2048937, -0.3816632, -0.06279082, -0.38774204, 0.21217284, -0.18890436, 0.14043479, 0.024926476, 0.17045365, 0.048644193, -0.17100555, -0.15697347, -0.35342333, 0.068213716, -0.41174227), target);
	target = MulAdd(nf3, MF4x4(0.045869917, -0.0015854153, 0.08683202, 0.09068768, -0.083463475, -0.31756514, 0.1342369, -0.088171095, 0.056276016, -0.23685989, 0.014580776, -0.2547697, 0.0940006, -0.043395106, 0.2034087, -0.022825241), target);
	target = MulAdd(ng3, MF4x4(-0.103751905, 0.069453366, -0.109700166, 0.042392224, 0.080248766, 0.094016075, -0.17143534, 0.05994925, -0.018760482, -0.04515021, 0.014608747, 0.06235974, -0.04300025, 0.093254045, -0.048682634, 0.28064325), target);
	target = MulAdd(nh3, MF4x4(-0.014232481, -0.08903044, 0.019999523, -0.020324621, -0.24016748, -0.2474486, -0.40321103, -0.15829015, -0.13566887, -0.041250605, -0.04751285, 0.057329945, 0.10219304, 0.05605011, -0.025595296, -0.01614233), target);
	target = MulAdd(ni3, MF4x4(0.025537677, 0.12660079, 0.051864993, 0.075601384, -0.021362955, 0.19969231, 0.123610884, 0.07575372, -0.061927922, 0.06550312, -0.05508335, 0.11704227, -0.13762979, 0.1817394, -0.18983638, -0.049257904), target);
	conv2d_6_tf[gxy] = target;
	
	target = MF4(0.07794292, -0.028107546, -0.059174247, 0.018621715);
	target = MulAdd(a1, MF4x4(-0.031695515, -0.31290495, 0.17557557, -0.10072623, 0.037879907, 0.07773684, 0.015941558, -0.1166975, 0.19065462, -0.18290205, 0.233234, 0.028230593, -0.16707195, -0.10103979, -0.1561307, 0.09858236), target);
	target = MulAdd(b1, MF4x4(-0.37433225, -0.37697765, 0.15590142, 0.3016965, 0.014981114, -0.07988245, 0.014191019, -0.0011213939, -0.11375956, -0.052503657, -0.013733191, 0.15110013, 0.009139605, 0.1890766, -0.29809618, -0.31938305), target);
	target = MulAdd(c1, MF4x4(0.043140218, -0.1566104, -0.002536191, -0.16493355, -0.211366, -0.021915436, -0.28728947, -0.14439434, 0.095511094, 0.056860972, -0.08280981, -0.21611294, 0.13561454, 0.0033129812, 0.14235094, 0.3003919), target);
	target = MulAdd(d1, MF4x4(0.010960085, 0.00600542, -0.2367317, 0.021453537, -0.03856116, -0.034778543, 0.164726, 0.13019681, -0.07757383, 0.33985314, -0.23832978, 0.095343575, 0.022204291, 0.20711215, 0.15877703, 0.2751253), target);
	target = MulAdd(e1, MF4x4(0.19641247, 0.032707132, 0.04379372, -0.21997298, -0.035852924, 0.06185132, 0.1484587, -0.36117685, -0.46992078, -0.41587535, 0.37467077, 0.09044606, -0.06615961, -0.4794214, 0.039470922, -0.3396352), target);
	target = MulAdd(f1, MF4x4(0.16657054, -0.039237928, 0.03857829, 0.049146365, 0.0401756, -0.03342998, 0.20032202, 0.05834436, 0.088986784, -0.16494772, -0.33883873, 0.18655993, -0.15986481, 0.091252044, 0.041209027, 0.15528268), target);
	target = MulAdd(g1, MF4x4(0.048688952, -0.009118804, 0.02290845, -0.17133589, -0.17210291, -0.027337966, -0.13893692, -0.07628787, -0.011510589, -0.04428704, 0.0015265835, -0.1197242, -0.011102018, -0.012120708, 0.06624063, 0.009720241), target);
	target = MulAdd(h1, MF4x4(-0.27416044, -0.120502286, 0.17721373, -0.16811286, -0.014482372, 0.02126685, -0.091303095, -0.16043608, 0.27898774, 0.17883328, -0.2844939, 0.21557346, 0.090356916, 0.10218719, 0.011249428, -0.10255321), target);
	target = MulAdd(i1, MF4x4(-0.12067477, -0.07217142, -0.04221149, 0.019745756, -0.26648012, -0.19199371, 0.029601155, 0.13147698, 0.23245896, 0.11450761, 0.1694102, -0.2318312, 0.0016206031, -0.0178794, 0.11511889, 0.04575681), target);
	target = MulAdd(a2, MF4x4(0.18695508, 0.045567334, 0.17440668, -0.42288253, -0.02287028, 0.05679073, -0.05641905, 0.12937486, 0.08140183, 0.013775387, 0.085393906, -0.124689564, 0.02426034, -0.08368493, -0.03149937, 0.12990832), target);
	target = MulAdd(b2, MF4x4(-0.10630359, -0.05139905, -0.14252634, 0.12539144, -0.07805999, -0.16011941, -0.12794735, 0.0023225932, -0.29767594, -0.0324489, -0.08008453, -0.10285779, 0.10714244, 0.07701981, 0.0861595, 0.032702547), target);
	target = MulAdd(c2, MF4x4(-0.011266752, 0.032032244, -0.16621222, 0.025718216, -0.13606001, 0.049900856, -0.12395804, -0.023709433, -0.019833436, 0.05525729, 0.043920193, 0.07480689, -0.06805129, -0.050729908, 0.015684852, -0.07608439), target);
	target = MulAdd(d2, MF4x4(-0.2432357, -0.08149558, -0.0954787, 0.13050736, 0.0658002, -0.15775995, -0.26192164, 0.07967364, -0.050966308, -0.15967421, -0.09035987, -0.19794956, 0.040908057, 0.1914722, -0.1416288, 0.20905873), target);
	target = MulAdd(e2, MF4x4(-0.31780317, -0.0037020883, 0.057150707, 0.4200519, 0.5618687, -0.047172155, -0.12254693, -0.014847399, 0.37398118, 0.3375763, 0.16677848, -0.06745357, 0.17024885, -0.22058573, -0.30246857, -0.5453735), target);
	target = MulAdd(f2, MF4x4(0.30349696, 0.009769963, 0.28675693, -0.118276045, 0.0057877507, 0.10974996, -0.072690375, 0.030470189, -0.6150014, 0.17645302, 0.2928011, 0.07855985, 0.17192386, 0.12024906, -0.07183019, 0.10537094), target);
	target = MulAdd(g2, MF4x4(-0.088262424, -0.14806455, 0.08148428, 0.10594823, 0.049873143, -0.013990187, 0.07425902, -0.030937834, 0.016817184, 0.08583546, -0.111037634, 0.09831576, 0.052983984, 0.024797885, 0.15503147, -0.052295715), target);
	target = MulAdd(h2, MF4x4(0.09108395, 0.025693672, -0.17206948, -0.02877885, 0.008410392, -0.08324596, -0.05451186, 0.10528576, -0.09902025, 0.20654637, -0.15849939, -0.022103371, 0.06444531, -0.12143805, 0.20113671, 0.14274625), target);
	target = MulAdd(i2, MF4x4(0.005467573, 0.16239832, -0.28808126, -0.21795005, -0.06378709, -0.0672865, -0.052615914, -0.08036216, 0.10728027, -0.09125139, -0.0835933, -0.08187764, 0.05370785, -0.019258037, -0.23184206, 0.2632737), target);
	target = MulAdd(a3, MF4x4(-0.05926071, 0.07018913, -0.021344975, 0.054756, -0.052149706, 0.0037597087, 0.0025042086, -0.04395278, 0.12245118, 0.04250789, 0.082335964, -0.014749995, -0.08621224, -0.023798082, 0.06332712, -0.11675374), target);
	target = MulAdd(b3, MF4x4(-0.32227162, -0.14337637, -0.23739144, -0.19812642, -0.09722166, 0.009280866, 0.04054724, 0.15704393, 0.07489584, -0.11492752, 0.09819001, 0.15120374, -0.14586051, -0.16354702, 0.23314816, -0.0022859343), target);
	target = MulAdd(c3, MF4x4(0.16142578, 0.075490505, -0.021885784, 0.06261672, 0.041199893, 0.03871687, 0.023842737, -0.011376236, 0.0767961, -0.045730814, 0.22563088, -0.09038255, -0.18399398, -0.04494118, -0.095894225, 0.030498588), target);
	target = MulAdd(d3, MF4x4(0.12479204, 0.101474956, 0.36386368, -0.050215095, 0.07824311, -0.10407957, -0.04313255, 0.32900745, -0.192804, -0.19723284, -0.06199248, 0.024969265, 0.22347516, 0.0065552266, 0.16316769, -0.03117915), target);
	target = MulAdd(e3, MF4x4(-0.41610017, -0.26189142, 0.9749233, -0.2030862, -0.018032711, 0.010767388, 0.021800261, -0.0042601344, -0.23240276, 0.3338158, -0.17494468, 0.17937262, 0.07974937, 0.33006057, -0.1869896, -0.37869284), target);
	target = MulAdd(f3, MF4x4(-0.071573325, 0.007554784, -0.102258176, 0.10642047, -0.09556476, -0.017912954, -0.14906247, 0.026633078, -0.08621331, 0.0017594047, -0.19624764, -0.115420476, 0.080624446, 0.05765888, 0.13215272, -0.035700615), target);
	target = MulAdd(g3, MF4x4(-0.0699439, -0.031065576, -0.1347926, 0.04561651, 0.026325148, 0.04517171, 0.027460657, 0.07887253, 0.09662138, -0.032300167, 0.18762928, 0.017682185, -0.21272552, -0.120953396, 0.07463968, 0.16759431), target);
	target = MulAdd(h3, MF4x4(0.031983048, 0.091939285, -0.29471913, -0.17392102, -0.029960087, -0.045441393, 0.11517783, 0.043017738, 0.19772391, 0.18100426, -0.023260262, 0.047123328, -0.34043354, -0.14247705, 0.2169891, -0.022246636), target);
	target = MulAdd(i3, MF4x4(-0.17198563, -0.23428284, 0.004200898, -0.024755895, 0.08732965, -0.0014298835, 0.14354117, -0.04866547, 0.040317383, -0.06782393, -0.098272204, 0.0007879826, -0.09150929, -0.013316801, 0.001446828, 0.017795574), target);
	target = MulAdd(na1, MF4x4(0.047712177, 0.050632354, 0.16054401, 0.043701835, -0.0639787, -0.027759142, -0.1216413, 0.06168221, 0.09751688, -0.0066430112, -0.06975059, -0.10249115, -0.12326384, -0.0046392973, -0.03523632, 0.11676963), target);
	target = MulAdd(nb1, MF4x4(0.0820976, -0.011279764, 0.06630965, 0.09390872, -0.24890396, -9.822562e-05, -0.114006236, 0.16826034, -0.082640596, 0.019303065, 0.14685081, 0.07503404, -0.17926271, -0.07983414, -0.04422908, 0.11301981), target);
	target = MulAdd(nc1, MF4x4(0.03553145, 0.0047965297, 0.08901363, 0.004263101, -0.15945294, -0.114194945, -0.059667293, 0.049415316, -0.09466441, -0.05142749, 0.15767507, -0.11340187, 0.10369652, 0.085223176, -0.06318044, -0.11618208), target);
	target = MulAdd(nd1, MF4x4(-0.17031148, -0.11489388, 0.24808751, 0.030365555, 0.054884836, -0.041506488, 0.038115, -0.064155854, 0.120106734, -0.100374915, -0.2048057, 0.09855774, 0.34214836, 0.01592769, 0.3974824, -0.009733501), target);
	target = MulAdd(ne1, MF4x4(-0.37295908, 0.05345721, 0.24855454, 0.18375815, 0.41732857, 0.059994586, 0.14148045, 0.15674202, 0.2914617, 0.28635538, 0.21487242, -0.16498509, 0.26191583, 0.34904888, -0.001136933, -0.047465373), target);
	target = MulAdd(nf1, MF4x4(-0.12775165, -0.13414834, 0.035279494, 0.0065703453, 0.21533409, -0.025021361, 0.3468732, -0.08434002, -0.0125741605, 0.0472579, -0.006702024, 0.03674878, -0.1543125, 0.12252382, -0.15259196, -0.10377763), target);
	target = MulAdd(ng1, MF4x4(-0.05423773, 0.076934956, -0.03817735, -0.0006111581, 0.017648958, 0.061248343, -0.01635863, 0.015901048, -0.14749493, -0.041009318, 0.030646784, 0.021186778, -0.15973417, 0.032205433, -0.36817935, 0.17054902), target);
	target = MulAdd(nh1, MF4x4(0.009821799, 0.023463782, -0.04574981, -0.03205052, -0.11479379, -0.1499543, -0.10254226, 0.14878044, -0.18908015, -0.057776958, 0.22117394, -0.008997101, -0.10566478, 0.029807804, 0.06296724, -0.09863535), target);
	target = MulAdd(ni1, MF4x4(0.012764414, 0.08003188, -0.079312325, 0.10915366, -0.14269702, 0.15378389, -0.11343741, -0.07815755, -0.028972412, -0.07575102, 0.104069054, 0.16929798, 0.08356986, -0.008557804, 0.1077067, -0.104730316), target);
	target = MulAdd(na2, MF4x4(0.14354274, 0.027146077, 0.06354999, -0.15823694, 0.11064279, 0.05926018, -0.09556645, -0.13623793, 0.064755484, -0.009504007, -0.04298976, -0.22026266, 0.19957776, -0.009840124, 0.08703728, 0.07162153), target);
	target = MulAdd(nb2, MF4x4(-0.2091648, -0.0857283, -0.30748418, 0.21271354, -0.18100224, -0.0055695246, -0.06332844, 0.17306994, 0.0077473186, 0.037243642, 0.012746569, 0.37735906, 0.23314455, 0.19154081, 0.05688001, -0.23929437), target);
	target = MulAdd(nc2, MF4x4(0.063928135, 0.058101837, -0.07964053, 0.09656037, 0.06193066, 0.052388765, 0.019220868, 0.09141577, 0.07279361, 0.03293571, 0.04207099, 0.100502975, 0.07098165, -0.03792573, 0.029752802, 0.00073165854), target);
	target = MulAdd(nd2, MF4x4(-0.061411377, 0.44493172, -0.2499116, 0.16028905, -0.24095571, -0.09098111, 0.2505775, -0.20317478, -0.046060897, 0.026942013, -0.1443618, -0.09946402, -0.2845509, 0.02574587, -0.10171842, 0.32726362), target);
	target = MulAdd(ne2, MF4x4(0.41548893, 0.55772763, 0.21224521, -0.2974941, -0.1518538, -0.096886665, 0.25241733, 0.48857507, -0.23768853, -0.24405806, 0.04989141, 0.18301181, -0.39112365, -0.29253578, 0.059537925, -0.01779737), target);
	target = MulAdd(nf2, MF4x4(0.038118728, 0.02858742, 0.6223735, -0.2673519, -0.0107285725, -0.05190993, 0.009639665, -0.01759551, 0.056182634, 0.0017370619, 0.015566999, 0.37397447, -0.18057133, -0.16243981, -0.06748175, 0.057786137), target);
	target = MulAdd(ng2, MF4x4(-0.011669291, -0.110343516, 0.28674936, -0.04969038, 0.32003263, 0.064857155, 0.013674471, -0.039692417, 0.040436286, -0.06889466, 0.037186123, -0.05564364, -0.025551032, -0.11479799, -0.12857372, -0.052941844), target);
	target = MulAdd(nh2, MF4x4(0.28328392, 0.39322296, 0.36961278, -0.3133618, 0.4632272, 0.11075263, 0.14776857, 0.29629925, -0.106794536, -0.17243811, 0.06743955, -0.06816463, 0.19705069, 0.16638671, -0.47120842, 0.15028188), target);
	target = MulAdd(ni2, MF4x4(-0.24694128, -0.13387236, 0.013511744, 0.23480985, 0.15844229, 0.15348844, 0.08692795, -0.026089827, -0.18550861, -0.105919205, 0.13584319, 0.14189197, 0.098633386, 0.03923177, 0.17303325, 0.0035986274), target);
	target = MulAdd(na3, MF4x4(0.07525532, -0.049425937, -0.045742936, -0.34401855, 0.23614922, 0.1365458, 0.5367143, -0.34322664, 0.08580669, -0.021081364, 0.32258797, 0.054717902, 0.011307636, -0.13174307, 0.10635861, 0.15759683), target);
	target = MulAdd(nb3, MF4x4(0.2053648, 0.11536576, 0.06543424, 0.273532, 0.004836322, -0.1135091, -0.13175261, -0.010553481, 0.26788777, 0.0052754665, 0.21684328, -0.038834624, 0.15681003, 0.2551737, -0.08061695, -0.2621798), target);
	target = MulAdd(nc3, MF4x4(-0.0026197245, -0.04237014, 0.15965913, 0.011015912, 0.13959743, 0.0613557, -0.057478882, 0.04333705, 0.02150156, 0.02613718, 0.029849462, 0.04144389, 0.060642015, -0.055863846, 0.07513707, -0.030098947), target);
	target = MulAdd(nd3, MF4x4(-0.25804156, 0.07992937, -0.2194363, -0.07638968, -0.31182626, 0.06877212, 0.26326504, -0.07852368, 0.005371965, 0.13532336, -0.27899355, -0.21762428, -0.11019938, 0.3272873, -0.18966602, 0.13429517), target);
	target = MulAdd(ne3, MF4x4(0.13235348, 0.19412184, -0.14834474, 0.045169294, -0.12562896, 0.42018193, -0.111528605, 0.14010738, -0.19459967, 0.013526394, -0.41562226, 0.0028783067, -0.62609005, -0.3033415, 0.4712338, 0.8222809), target);
	target = MulAdd(nf3, MF4x4(0.09286205, 0.09806087, -0.07340961, -0.17533489, 0.027318375, -0.10870942, -0.038293675, -0.16472916, -0.1825589, -0.052559845, -0.30276018, -0.14359148, -0.21606436, -0.110118784, 0.016834917, -0.17742018), target);
	target = MulAdd(ng3, MF4x4(-0.020260928, 0.087848864, 0.047859445, -0.047904506, 0.048111416, 0.1583765, -0.20442098, -0.100690275, -0.0013411752, -0.07799378, 0.15336171, -0.10123076, 0.17678842, 0.17897983, -0.09674411, -0.011004586), target);
	target = MulAdd(nh3, MF4x4(-0.018577576, -0.06431042, 0.09155964, 0.015572989, -0.2997381, -0.27266306, -0.038626052, 0.049783256, -0.0104627805, -0.00770176, 0.11773571, 0.1784294, 0.09392711, 0.034571096, 0.11028318, -0.09109526), target);
	target = MulAdd(ni3, MF4x4(0.16055113, 0.090300724, -0.03638531, -0.04085534, 0.08429917, 0.020470984, -0.19414762, -0.3244146, 0.14926222, -0.04275537, 0.3243775, -0.27660474, 0.21811403, 0.00095158996, -0.029139725, -0.14773428), target);
	conv2d_6_tf1[gxy] = target;

	target = MF4(-0.024488186, -0.041086167, 0.026466459, -0.025512012);
	target = MulAdd(a1, MF4x4(0.24537118, 0.17905983, 0.07789307, 0.016952513, 0.0141091775, -0.011334478, -0.031922385, -0.002754333, -0.09490796, 0.056371696, -0.011801579, -0.13965698, -0.035000853, -0.004262493, 0.07772451, 0.08179461), target);
	target = MulAdd(b1, MF4x4(0.49467468, 0.0060151266, -0.16210476, 0.44510034, 0.032212194, 0.028270312, -0.002976181, -0.0750645, -0.120187126, -0.3223084, -0.036695287, -0.27901456, 0.026024181, -0.38380507, -0.107403666, 0.106261775), target);
	target = MulAdd(c1, MF4x4(-0.27276495, 0.07816642, 0.16584107, 0.3256445, -0.003785352, -0.05884198, -0.028097598, 0.09085398, 0.18065354, 0.12995216, -0.012668798, -0.18628691, 0.14217433, 0.060047373, 0.13106324, 0.002042596), target);
	target = MulAdd(d1, MF4x4(-0.086455494, -0.14862305, -0.525558, 0.16174366, -0.07319531, 0.15502526, -0.010380826, -0.07271152, 0.19700976, 0.046370283, 0.11651438, 0.081478894, 0.19148621, 0.03100971, 0.1023476, 0.07874108), target);
	target = MulAdd(e1, MF4x4(0.6140143, -0.027726987, -0.009253838, -0.2904735, -0.0004950705, -0.17041264, -0.16776061, 0.0082762465, -0.3594797, 0.2532505, -0.6598625, 0.19527398, -0.2580451, -0.047699004, -0.19487855, 0.26656064), target);
	target = MulAdd(f1, MF4x4(-0.05993486, 0.05261301, -0.11092236, -0.07093469, -0.12740676, 0.28895375, -0.024522636, 0.10566457, 0.25105092, -0.19367103, 0.31918752, -0.08284367, 0.010306112, -0.16058734, 0.025336768, -0.1421889), target);
	target = MulAdd(g1, MF4x4(-0.30034626, 0.20041251, 0.038978297, 0.24891369, 0.16952564, -0.08357092, 0.0041356883, -0.11644513, 0.09228839, -0.112779655, 0.026311902, 0.06545678, 0.0698254, -0.112796366, 0.0029497906, 0.03857845), target);
	target = MulAdd(h1, MF4x4(0.16609864, -0.22584435, -0.24474208, -0.27484784, -0.31675163, 0.07935485, 0.18763326, 0.13037825, 0.11668147, -0.2776588, -0.11885876, -0.051946215, 0.0821847, 0.012703901, -0.0351841, -0.10732197), target);
	target = MulAdd(i1, MF4x4(0.14786936, 0.04071705, 0.030221082, -0.120953605, -0.013662891, -0.14799207, -0.028566806, -0.13245614, 0.09371325, 0.0018758543, -0.075789824, 0.021227634, -0.0687209, 0.04126068, 0.01861056, 0.00038673988), target);
	target = MulAdd(a2, MF4x4(-0.2150947, 0.019924847, -0.057041053, -0.055024747, 0.04864997, -0.010266812, 0.12674728, 0.0916339, 0.02709077, -0.042510916, -0.15185884, -0.1128658, 0.054390796, -0.12276366, -0.07853503, 0.16050841), target);
	target = MulAdd(b2, MF4x4(0.14254624, 0.09403803, -0.077061795, -0.040265787, -0.1851944, 0.03568108, -0.064231634, 0.057467405, 0.10839864, 0.67165095, 0.31980324, -0.22381754, -0.094957665, 0.081498906, 0.061563525, -0.061372254), target);
	target = MulAdd(c2, MF4x4(-0.026212232, -0.016600188, -0.032421675, -0.018441828, -0.0039220974, -0.092276715, -0.05251956, -0.0014283194, -0.07582186, -0.34406552, 0.012223887, 0.16421928, 0.067920506, -0.04867461, -0.025583208, -0.02245058), target);
	target = MulAdd(d2, MF4x4(0.06561416, 0.08525047, -0.06454739, 0.03325223, -0.2756252, -0.07606139, -0.16622546, -0.19015047, -0.0942788, 0.055729307, 0.08911129, 0.036073096, 0.2819285, 0.27803645, 0.41541302, -0.46012112), target);
	target = MulAdd(e2, MF4x4(0.116886355, 0.25485554, -0.08467562, 0.015698416, 0.120505005, 0.14997847, 0.35307086, 0.06391821, 0.2480685, -0.91017604, 0.30765083, 0.41334546, -0.2484761, 0.0036243596, -0.17822865, -0.0688765), target);
	target = MulAdd(f2, MF4x4(-0.018610235, 0.10026272, 0.09050735, 0.09349237, -0.32725444, -0.04461541, -0.08524241, -0.07169624, -0.17375232, -0.04668291, 0.1105147, -0.21981657, 0.14551818, -0.09236485, 0.22311887, 0.22838955), target);
	target = MulAdd(g2, MF4x4(-0.046239845, 0.092623316, 0.06968011, -0.07118946, -0.112399414, 0.12900421, 0.1622531, -0.06568552, -0.0046933675, -0.015529387, -0.035191614, 0.01626195, -0.081475765, -0.05045334, -0.087063916, -0.2726226), target);
	target = MulAdd(h2, MF4x4(0.20086902, -0.105082855, 0.064632416, 0.032850675, -0.14514364, -0.08420714, -0.49481058, 0.20139864, 0.17293651, -0.013185847, 0.061619177, 0.3313921, -0.3385868, 0.23518777, -0.33251905, 0.17975967), target);
	target = MulAdd(i2, MF4x4(0.06966267, -0.06778524, -0.013489221, 0.08452447, -0.06677413, 0.024880748, 0.0966029, -0.14441288, 0.117813595, -0.021073775, -0.10008402, 0.16905701, 0.1681992, 0.023752017, 0.10749209, 0.12432793), target);
	target = MulAdd(a3, MF4x4(-0.1513078, -0.093761355, -0.0030828249, -0.110072024, -0.055719357, -0.009922474, -0.043953415, 0.050671145, -0.060472284, 0.028386949, -0.013459928, -0.081548885, -0.0835807, 0.02647864, -0.20652756, -0.0060736574), target);
	target = MulAdd(b3, MF4x4(0.028220167, -0.028944401, -0.19519375, 0.13515931, -0.00042262973, 0.08360426, 0.010636624, -0.030487528, 0.27422678, -0.045074224, 0.07301797, 0.006780949, -0.08468292, -0.04887693, -0.09148827, 0.018867895), target);
	target = MulAdd(c3, MF4x4(0.1262579, 0.018898701, 0.13322218, 0.035301305, -0.07070634, -0.0078546405, 0.027999826, 0.048316766, -0.15131034, 0.0023264016, 0.013600765, -0.034428634, -0.07507105, -0.08255354, -0.08881507, -0.071658276), target);
	target = MulAdd(d3, MF4x4(-0.02041055, 0.22154346, 0.26627985, 0.0605345, -0.058928274, -0.06632422, 0.009541804, 0.030693937, -0.11625062, 0.050398614, -0.08913635, -0.048804708, 0.05243602, 0.07607664, -0.11982216, -0.030418042), target);
	target = MulAdd(e3, MF4x4(-0.17171955, -0.1251785, -0.03278011, -0.027012454, -0.14810622, 0.011841085, -0.17640975, -0.15179725, 0.28515115, -0.14059372, 0.7398977, 0.016162258, 0.39136347, 0.39292285, 0.1379987, 0.3367675), target);
	target = MulAdd(f3, MF4x4(-0.010929663, -0.06879933, -0.08348263, 0.03733299, 0.062476087, 0.01568991, -0.05271144, 0.04062246, 0.032427862, -0.113407016, -0.12636085, -0.016191803, 0.17277598, 0.08344308, 0.038378276, 0.073893026), target);
	target = MulAdd(g3, MF4x4(0.17167374, -0.121874295, -0.088408865, -0.235186, -0.13921842, 0.07555293, -0.041501705, 0.050021265, -0.087886505, -0.08035099, 0.09180792, 0.05183994, -0.26203418, 0.04711709, -0.10731481, -0.14843997), target);
	target = MulAdd(h3, MF4x4(-0.036347087, 0.01029584, -0.056132622, 0.0878486, -0.064945646, 0.07907602, 0.12751542, 0.02885936, 0.23358488, -0.029665042, -0.29615182, -0.10431463, 0.023203064, 0.069443814, -0.1002703, -0.096389264), target);
	target = MulAdd(i3, MF4x4(0.035990857, 0.10344318, 0.022896135, -0.07152821, 0.05887347, -0.015482111, -0.014297709, 0.055369038, -0.02750558, 0.08424956, 0.04510472, 0.017769516, 0.04108422, -0.07342653, -0.08320298, 0.066610456), target);
	target = MulAdd(na1, MF4x4(-0.066317484, 0.04255107, -0.07966337, -0.124135956, -0.018745063, -0.010161496, -0.011399174, 0.039982356, 0.15349951, 0.062997095, 0.045578636, 0.107150234, -0.032815512, -0.13440657, -0.040952615, 0.18263227), target);
	target = MulAdd(nb1, MF4x4(0.10633369, -0.018656015, -0.016764622, -0.04388912, 0.08758304, 0.19932802, 0.046600826, 0.016901758, 0.21165867, -0.025475888, 0.07850137, 0.06617148, -0.16846764, 0.40805286, -0.06401491, -0.080602095), target);
	target = MulAdd(nc1, MF4x4(-0.123656854, -0.014010881, 0.028575048, -0.069250524, -0.15018106, 0.103246264, -0.11777147, -0.05850124, -0.1353436, -0.0013566307, -0.015963338, -0.023948817, 0.095956124, -0.039555125, 0.076399274, 0.07427479), target);
	target = MulAdd(nd1, MF4x4(-0.015483045, -0.12661438, 0.04873668, -0.08844129, -0.011324154, -0.109799534, -0.023892801, 0.05610018, -0.05156818, -0.046244036, -0.119778745, -0.072065085, -0.106656425, 0.088378794, 0.011626502, -0.11913755), target);
	target = MulAdd(ne1, MF4x4(-0.04775599, 0.16536692, 0.07654365, -0.180473, -0.2773871, 0.16781096, -0.15096998, -0.15038413, 0.09663952, -0.12574138, -0.079353325, 0.15394118, 0.19871943, 0.1274317, -0.015473073, -0.13977093), target);
	target = MulAdd(nf1, MF4x4(0.046030425, -0.0035080586, 0.00019108523, -0.061198276, 0.10959022, -0.08084982, 0.17658228, -0.077856205, -0.06706116, -0.021110784, -0.014351807, -0.13647127, -0.15924501, -0.045259945, -0.08266116, 0.18638277), target);
	target = MulAdd(ng1, MF4x4(-0.016468504, -0.0060328534, -0.027133752, -0.011417157, -0.0060868333, 0.14410168, -0.02163876, 0.02426387, -0.045196433, -0.050631806, -0.03250163, -0.05960187, -0.032833368, 0.07025108, -0.008574312, 0.04666302), target);
	target = MulAdd(nh1, MF4x4(0.16550453, -0.12357287, 0.10894651, 0.061207913, -0.26402593, 0.05317881, 0.17066815, 0.035360787, -0.2500221, 0.0465414, -0.07445082, 0.08822553, 0.09093388, 0.026007025, 0.02103897, -0.008406647), target);
	target = MulAdd(ni1, MF4x4(0.008951011, -0.011805461, -0.041415952, -0.004712088, 0.107074626, -0.040568706, -0.09944574, -0.06400702, -0.033343032, 0.013737211, -0.0889104, -0.013806611, -0.0331564, 0.0051299958, 0.015190706, 0.02362979), target);
	target = MulAdd(na2, MF4x4(-0.122751765, 0.1503006, -0.08277906, 0.18938261, 0.004363168, 0.07933008, 0.07121668, -0.0833466, -0.014839421, -0.066141434, 0.015289756, -0.040877122, -0.028999893, 0.1169574, 0.043211922, -0.05808607), target);
	target = MulAdd(nb2, MF4x4(0.18331528, 0.39588076, 0.20556965, -0.10883933, -0.0004949832, -0.15585636, -0.040524032, -0.057982635, -0.028523464, -0.06929509, -0.058184557, 0.025949743, 0.027700417, -0.22790357, 0.06694592, -0.020108582), target);
	target = MulAdd(nc2, MF4x4(-0.11836253, -0.04298726, 0.032929875, 0.2242861, -0.11389548, 0.068775766, 0.019789936, -0.03006107, 0.08794808, 0.12770821, 0.0149423, -0.091368824, 0.015293162, 0.019910589, 0.035969447, 0.04707816), target);
	target = MulAdd(nd2, MF4x4(0.26466385, 0.136147, 0.21548775, -0.3231222, 0.004888472, -0.3866182, -0.20606667, 0.15087834, 0.02862634, 0.0817037, 6.5014992e-06, 0.2008316, 0.09526983, 0.042665128, -0.040663883, 0.003764197), target);
	target = MulAdd(ne2, MF4x4(-0.2112101, 0.088516004, 0.558493, 0.06698759, -0.10676672, 0.15699397, -0.043309934, -0.52478033, -0.17806827, 0.017635964, -0.082869515, -0.5656354, -0.18426882, -0.12042118, -0.01596299, -0.06495108), target);
	target = MulAdd(nf2, MF4x4(-0.21135955, 0.05781414, -0.09844541, 0.022916462, 0.14397569, 0.022936279, 0.097970665, 0.042522192, -0.00126595, 0.0038257148, 0.07008256, -0.1824468, 0.048791062, -0.07465642, -0.046671294, 0.03230469), target);
	target = MulAdd(ng2, MF4x4(0.19789836, -0.116786405, -0.1616968, -0.22459605, -0.024078539, 0.17570955, 0.16125445, 0.3992117, 0.052064337, 0.036609706, 0.05254302, -0.050398353, 0.036562983, 0.049556475, 0.08297576, 0.2054982), target);
	target = MulAdd(nh2, MF4x4(-0.5742053, 0.098297775, 0.0633016, 0.14853445, 0.16893868, 0.11639841, 0.07855964, 0.15836205, -0.16521858, -0.09322673, -0.005118043, -0.05021679, 0.22580391, 0.07365953, 0.1695237, 0.031488914), target);
	target = MulAdd(ni2, MF4x4(0.16460675, -0.03634353, 0.073270105, -0.19762266, 0.0013135028, -0.096437894, 0.06374399, -0.024057448, -0.16969606, 0.036301896, -0.06406477, -0.16757035, -0.038686167, -0.024916979, 0.03403845, -0.05160279), target);
	target = MulAdd(na3, MF4x4(0.050821684, 0.105403356, -0.022229152, 0.023213169, -0.46897453, -0.16244169, -0.082473665, -0.27779078, -0.033359285, 0.12679179, 0.12876998, -0.24077201, 0.10091285, 0.02276067, 0.25290954, 0.010847028), target);
	target = MulAdd(nb3, MF4x4(0.112502374, -0.3518416, -0.079604715, -0.039383356, 0.312556, 0.25550213, 0.13873889, -0.37628496, -0.14580576, -0.1397425, -0.02574422, 0.12305562, 0.1102169, -0.052005965, -0.1393713, -0.037981503), target);
	target = MulAdd(nc3, MF4x4(-0.084098294, 0.14593758, 0.011593753, -0.07939934, 0.10820567, -0.036130577, 0.114290334, 0.083149664, 0.036933735, 0.08104934, -0.05769655, 0.027683796, 0.05024431, 0.07313829, -0.010789726, 0.12981457), target);
	target = MulAdd(nd3, MF4x4(-0.11338103, -0.150482, 0.20733237, 0.29369837, -0.102634065, -0.15092887, -0.014666432, -0.091397986, 0.0947413, -0.12863293, -0.027620759, 0.005695903, 0.31916696, 0.035850845, -0.031173147, -0.022860976), target);
	target = MulAdd(ne3, MF4x4(0.23157911, -0.2946123, -0.16097677, -0.45535967, 0.36959732, -0.026627757, 0.6321515, 0.105474636, -0.053087663, 0.096396655, 0.12052069, -0.06778611, -1.0060586, 0.3678515, -0.17115732, -0.581296), target);
	target = MulAdd(nf3, MF4x4(-0.08702807, 0.0025244744, -0.057799466, 0.045048367, -0.068116546, -0.08659905, -0.13093567, 0.16046713, -0.29240185, 0.2164886, -0.20268321, 0.018693617, -0.15281823, -0.17188364, -0.25272366, 0.026025953), target);
	target = MulAdd(ng3, MF4x4(0.15970327, -0.011031381, -0.20033363, -0.04695719, 0.048352227, -0.0016179485, -0.057843156, 0.08184532, 0.029011851, 0.12288869, -0.0007196704, -0.12196297, 0.25427872, -0.09587006, -0.07603035, 0.0067141145), target);
	target = MulAdd(nh3, MF4x4(-0.18811099, -0.0076463297, 0.17162384, 0.001552174, 0.5296002, 0.012637236, -0.4305403, -0.44700608, 0.024435172, -0.023834689, -0.17837442, 0.030023761, 0.025391584, -0.10389408, 0.028054329, -0.069815405), target);
	target = MulAdd(ni3, MF4x4(0.10198799, -0.017247394, -0.102331705, 0.13685812, -0.27715954, 0.10640225, 0.033743538, 0.045423724, -0.13994834, 0.055460025, -0.009399727, 0.015256073, 0.05103997, 0.120834984, 0.0033520947, 0.053223636), target);
	conv2d_6_tf2[gxy] = target;
}

//!PASS 8
//!DESC Conv-4x1x1x120, Depth-to-Space
//!IN INPUT, conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2, conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2, conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2, conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2, conv2d_6_tf, conv2d_6_tf1, conv2d_6_tf2
//!OUT OUTPUT
//!BLOCK_SIZE 16
//!NUM_THREADS 64

void Pass8(uint2 blockStart, uint3 threadId) {
	uint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;
	
	const uint2 outputSize = GetOutputSize();
	if (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {
		return;
	}

	float2 inputPt = GetInputPt();
	float2 pos = ((gxy >> 1) + 0.5f) * inputPt;

	MF4 g0 = conv2d_2_tf.SampleLevel(sam, pos, 0);
	MF4 g1 = conv2d_2_tf1.SampleLevel(sam, pos, 0);
	MF4 g2 = conv2d_2_tf2.SampleLevel(sam, pos, 0);
	MF4 g3 = conv2d_3_tf.SampleLevel(sam, pos, 0);
	MF4 g4 = conv2d_3_tf1.SampleLevel(sam, pos, 0);
	MF4 g5 = conv2d_3_tf2.SampleLevel(sam, pos, 0);
	MF4 g6 = conv2d_4_tf.SampleLevel(sam, pos, 0);
	MF4 g7 = conv2d_4_tf1.SampleLevel(sam, pos, 0);
	MF4 g8 = conv2d_4_tf2.SampleLevel(sam, pos, 0);
	MF4 g9 = conv2d_5_tf.SampleLevel(sam, pos, 0);
	MF4 g10 = conv2d_5_tf1.SampleLevel(sam, pos, 0);
	MF4 g11 = conv2d_5_tf2.SampleLevel(sam, pos, 0);
	MF4 g12 = conv2d_6_tf.SampleLevel(sam, pos, 0);
	MF4 g13 = conv2d_6_tf1.SampleLevel(sam, pos, 0);
	MF4 g14 = conv2d_6_tf2.SampleLevel(sam, pos, 0);

	MF4 ng0 = max(-g0, 0);
	MF4 ng1 = max(-g1, 0);
	MF4 ng2 = max(-g2, 0);
	MF4 ng3 = max(-g3, 0);
	MF4 ng4 = max(-g4, 0);
	MF4 ng5 = max(-g5, 0);
	MF4 ng6 = max(-g6, 0);
	MF4 ng7 = max(-g7, 0);
	MF4 ng8 = max(-g8, 0);
	MF4 ng9 = max(-g9, 0);
	MF4 ng10 = max(-g10, 0);
	MF4 ng11 = max(-g11, 0);
	MF4 ng12 = max(-g12, 0);
	MF4 ng13 = max(-g13, 0);
	MF4 ng14 = max(-g14, 0);

	g0 = max(g0, 0);
	g1 = max(g1, 0);
	g2 = max(g2, 0);
	g3 = max(g3, 0);
	g4 = max(g4, 0);
	g5 = max(g5, 0);
	g6 = max(g6, 0);
	g7 = max(g7, 0);
	g8 = max(g8, 0);
	g9 = max(g9, 0);
	g10 = max(g10, 0);
	g11 = max(g11, 0);
	g12 = max(g12, 0);
	g13 = max(g13, 0);
	g14 = max(g14, 0);

	MF4 target1 = MF4(0.00032424182, 0.027523492, -0.021710647, 0.0054222327);
	target1 = MulAdd(g0, MF4x4(-0.01801902, 0.016983684, 0.14704974, 0.13775583, -0.06568407, 0.031903602, -0.057818945, 0.03639395, -0.16158727, -0.11652214, -0.0512031, -0.017740106, 0.0073386175, -0.12396601, -0.08410588, -0.13822778), target1);
	target1 = MulAdd(g1, MF4x4(-0.14072196, 0.013641312, -0.110022426, 0.022624938, -0.053968057, -0.07968724, 0.036026128, 0.034548678, -0.006345876, -0.04177406, -0.10516601, -0.14248538, -0.10635475, 0.032888547, -0.07574279, 0.037366178), target1);
	target1 = MulAdd(g2, MF4x4(0.20902354, -0.03131852, 0.053658944, -0.13953559, -0.0022027926, 0.022661211, 0.02766268, 0.051950134, 0.022593375, -0.16854303, -0.00068382383, -0.15171093, -0.0011307014, 0.03237067, 0.0022356252, 0.05513321), target1);
	target1 = MulAdd(ng0, MF4x4(0.057087313, 0.030007327, -0.04517254, -0.10142689, 0.049131192, -0.009568129, 0.07815266, 0.07463051, 0.061763447, 0.15247895, 0.06213266, 0.08260832, 0.08928647, 0.08173359, 0.078985415, 0.20306781), target1);
	target1 = MulAdd(ng1, MF4x4(0.024888368, 0.050323978, 0.019135669, 0.042805452, 0.021970041, 0.06761805, -0.021047724, -0.029622229, -0.024018591, -0.013619991, 0.050196014, 0.094873905, 6.3763815e-05, 0.022800315, -0.038917273, -0.023665745), target1);
	target1 = MulAdd(ng2, MF4x4(-0.10751045, -0.08052679, 0.0021425171, 0.018060567, 0.0002820803, -0.042460952, -0.0037310636, -0.048854582, 0.07688915, 0.1803434, -0.021755088, 0.076342724, 0.006899015, 0.010482747, -0.04608032, -0.07149793), target1);
	target1 = MulAdd(g3, MF4x4(0.017074876, 0.080092184, -0.096824504, -0.030697478, 0.19260724, 0.031606834, -0.001376051, -0.19222017, -0.029233975, 0.07513273, -0.061539974, 0.004413319, -0.011706104, 0.037078228, 0.0053027975, 0.079575956), target1);
	target1 = MulAdd(g4, MF4x4(-0.08378676, 0.1326312, -0.2575891, -0.055032767, -0.0205247, -0.11107971, 0.048341025, -0.048915315, 0.059188437, -0.111718066, -0.039619286, -0.165657, 0.018990505, 0.0017499351, -0.038804792, -0.086953335), target1);
	target1 = MulAdd(g5, MF4x4(0.08722738, -0.005039459, 0.07542034, -0.061049137, 0.025591044, 0.16946335, -0.114563115, -0.034830607, 0.17842476, 0.11199776, 0.008686021, -0.04142143, 0.09293036, -0.08505899, 0.087229416, -0.102381825), target1);
	target1 = MulAdd(ng3, MF4x4(-0.05071452, -0.11384357, 0.11169348, 0.05153077, -0.24056591, -0.056497227, -0.022856226, 0.19383447, 0.02966522, -0.08128601, 0.07467419, -0.019276833, 0.0020969608, 0.029036064, -0.018299947, -0.043434255), target1);
	target1 = MulAdd(ng4, MF4x4(0.043311678, -0.102582484, 0.24798667, 0.06873956, 0.0067927428, 0.098214865, -0.04124763, 0.04490437, -0.06492586, 0.07359665, 0.033324532, 0.120802104, -0.02277019, 0.0021284765, 0.028036185, 0.0687184), target1);
	target1 = MulAdd(ng5, MF4x4(-0.090083234, -0.0073258677, -0.089089446, 0.04679012, -0.025320487, -0.14760749, 0.13109742, 0.039976012, -0.19494978, -0.10603485, -0.02347976, 0.050328556, -0.098470725, 0.05546942, -0.0589479, 0.09333735), target1);
	target1 = MulAdd(g6, MF4x4(0.011967837, 0.043009043, -0.031999476, 0.022178393, -0.0044910796, -0.023010693, -0.0062060836, -0.031039031, -0.06364646, -0.06365887, -0.029040523, -0.06675782, 0.042098384, 0.032490075, 0.014491912, -0.0011224645), target1);
	target1 = MulAdd(g7, MF4x4(0.018761864, 0.040258046, 0.015349441, 0.018706307, 0.00089981244, -0.02443291, 0.015173669, -0.008663882, -0.028121095, -0.026123954, -0.011663427, 0.007668493, 0.014926302, 0.03380763, -0.031567805, 0.018132508), target1);
	target1 = MulAdd(g8, MF4x4(0.011394552, 0.0090883775, 0.011154194, -0.0044680317, 0.0067254594, -0.013079778, 0.019036228, -0.0028701108, -0.014439092, 0.009564524, -0.0135836145, 0.038879603, 0.009461635, -0.014671546, 0.019386383, -0.007752184), target1);
	target1 = MulAdd(ng6, MF4x4(-0.025151528, -0.044746082, 0.030572962, -0.02323665, 0.00077518023, 0.01415367, 0.0053574373, 0.022526693, 0.013129106, 0.03534322, 0.004773132, 0.077551566, -0.04895647, -0.03762353, -5.172888e-05, 0.012251733), target1);
	target1 = MulAdd(ng7, MF4x4(0.03152615, 0.018333036, -1.679869e-05, -0.021737477, -0.076627344, 0.014928358, -0.010456622, 0.07781939, 0.027225398, 0.04659384, -0.0070413146, 0.026454208, -0.017691148, -0.045554973, 0.006093557, -0.03178835), target1);
	target1 = MulAdd(ng8, MF4x4(-0.018481147, -0.05547381, 0.013941934, -0.024416983, 0.027262108, 0.024724096, 0.0063773487, 0.017461762, 0.027166976, -0.02301659, -0.0051281936, -0.0556913, -0.08051738, -0.04638631, 0.015620527, 0.05266176), target1);
	target1 = MulAdd(g9, MF4x4(0.009157959, 0.08455516, -0.0602788, -0.002439282, -0.02327793, -0.021213762, 0.005698031, 0.002378188, 0.005837403, -0.17286417, 0.13316536, -0.03154805, -0.022410449, -0.047884528, 0.043882124, 0.047745265), target1);
	target1 = MulAdd(g10, MF4x4(-0.008956661, -0.010137066, -0.007736993, 0.012567491, 0.017111477, -0.050893363, 0.001874233, -0.059543177, 0.043244537, 0.07476611, -0.045336626, -0.05902348, 0.006996905, -0.0718768, -0.004126288, -0.0642003), target1);
	target1 = MulAdd(g11, MF4x4(0.015879916, 0.040725194, 0.013168297, 0.045075603, -0.01297648, -0.0059797773, -0.015060089, -0.010935342, 0.02049647, 0.034105264, 0.014809084, 0.008366516, -0.051084228, 0.008029285, -0.04545378, 0.023945345), target1);
	target1 = MulAdd(ng9, MF4x4(-0.019541753, 0.0043494124, -0.0001693803, 0.025214057, 0.018182391, 0.027842158, -0.024553766, 0.006766178, -0.029599829, -0.040605135, -0.048153292, -0.018185124, -0.011694039, -0.01453888, -0.022709226, -0.057430573), target1);
	target1 = MulAdd(ng10, MF4x4(-0.08764812, 0.075131916, 0.020414736, -0.050893847, -0.004293497, -0.021197274, -0.0018027405, 0.038802553, 0.021213993, 0.04283625, 0.016089795, 0.03304562, 0.028084677, 0.029016564, 0.03612216, 0.057901673), target1);
	target1 = MulAdd(ng11, MF4x4(0.0057912855, -0.098451905, 0.036739763, -0.06572119, 0.033765186, 0.12279821, -0.025154155, 0.013806011, -0.024162477, -0.009859432, -0.0021075422, -0.02089062, -0.0021298097, 0.0015791449, -0.020502191, -0.033028405), target1);
	target1 = MulAdd(g12, MF4x4(0.056495182, 0.054205123, 0.032467738, -0.038979713, 0.051377665, -0.0017128112, -0.08553907, 0.08154442, 0.005708859, -0.030467357, 0.056872, 0.033040885, -0.044282306, 0.06320046, -0.077476226, 0.057799205), target1);
	target1 = MulAdd(g13, MF4x4(-0.10876674, 0.08259616, -0.051354583, 0.08138756, 0.012491528, 0.05439006, 0.030529, -0.058732726, 0.018389955, 0.008327744, 0.013216314, -0.017489955, 0.004981595, 0.023339638, -0.019406691, -0.0027005207), target1);
	target1 = MulAdd(g14, MF4x4(0.070612185, 0.053251043, -0.045872025, -0.08984753, 0.02582859, 0.011240578, 0.019407703, 0.006788904, 0.036534656, -0.07338343, -0.06434088, -0.023382546, -0.052568957, -0.065474, 0.047638886, 0.050624263), target1);
	target1 = MulAdd(ng12, MF4x4(-0.018035047, -0.078713804, 0.01140521, 0.00012953136, -0.014339465, -0.018948816, 0.04643105, -0.04246953, -0.026791897, 0.02513823, -0.045333434, -0.06504635, -0.024868866, -0.017653162, 0.01686154, -0.007936053), target1);
	target1 = MulAdd(ng13, MF4x4(0.042380203, -0.007992952, -0.012940898, -0.018271092, -0.036340363, 0.02297692, -0.0260716, 0.011647489, 0.055189207, -0.089658745, 0.05829902, -0.05787894, -0.08049513, -0.091856234, 0.09487785, 0.060702115), target1);
	target1 = MulAdd(ng14, MF4x4(0.0022311446, 0.0078554, -0.021208685, 0.009572731, -0.09023339, 0.016889412, 0.029632647, -0.0034283176, 0.00453538, 0.040616557, 0.023657676, 0.03687379, -0.021128353, -0.020249786, -0.006316465, 0.017151888), target1);

	MF4 target2 = MF4(0.026287671, 0.015689341, 0.021467328, 0.0052872337);
	target2 = MulAdd(g0, MF4x4(-0.016576298, -0.013039568, -0.07158028, -0.056509558, -0.06965122, -0.1272158, -0.07288651, -0.10423224, 0.048223313, 0.03172697, 0.014178331, 0.002855858, 0.004538786, 0.034928907, 0.03173054, 0.03412037), target2);
	target2 = MulAdd(g1, MF4x4(0.09168274, 0.056355372, 0.023804985, 0.009515965, 0.024203284, 0.01641063, 0.016683895, -0.012702561, -0.038824845, -0.037673414, -0.010391583, -0.014636746, 0.03192526, -0.02340906, 0.027524544, -0.015568387), target2);
	target2 = MulAdd(g2, MF4x4(-0.0966996, -0.041418746, -0.055650715, 0.002117608, 0.00031688716, -0.008733063, -0.024573568, -0.03425321, -0.036262326, 0.04404278, -0.014729649, 0.05618371, 0.008530102, -0.015607405, 0.015309457, -0.013621667), target2);
	target2 = MulAdd(ng0, MF4x4(0.0361472, 0.025806008, 0.0583716, 0.06861344, 0.06315231, 0.10136267, 0.050169814, 0.07334672, -0.029601635, -0.06431154, -0.030672554, -0.042512666, -0.051434014, -0.039382752, -0.050772913, -0.08629934), target2);
	target2 = MulAdd(ng1, MF4x4(-0.02201249, -0.03920109, -0.030633967, -0.0530296, -0.016168922, 0.0019067918, -0.014961821, 0.017761061, 0.012465623, 0.01857369, 0.009440995, -0.014336409, 0.0056113736, 0.012547043, 0.019320931, 0.025894852), target2);
	target2 = MulAdd(ng2, MF4x4(0.079413086, 0.055332463, 0.023716403, 0.005429431, 0.0043804864, 0.026764238, 0.011610661, 0.03245363, -0.032408644, -0.056873523, -0.0019144824, -0.026196169, -0.03347332, -0.0174185, -0.00020654689, 0.023554688), target2);
	target2 = MulAdd(g3, MF4x4(-0.055310458, -0.079070315, 0.0066684894, -0.034588877, -0.07334732, -0.000985991, -0.011984627, 0.08308032, 0.011794159, -0.0144758625, 0.03586815, 0.009038553, -0.0016798767, 0.045218308, 0.016524237, 0.045677744), target2);
	target2 = MulAdd(g4, MF4x4(0.0083010085, 0.028407311, 0.06600332, 0.07460616, 0.071611166, 0.09643883, 0.034676284, 0.05824412, -0.07973774, -0.030707551, -0.03709346, 0.012161441, -0.02977386, -0.018077906, 0.0017052453, 0.012292145), target2);
	target2 = MulAdd(g5, MF4x4(0.01893072, 0.032129273, 0.010857875, 0.037224095, -0.01413747, -0.047471486, 0.05192984, 0.03202811, -0.05082615, -0.027038824, -0.008331923, 0.03062506, -0.01725524, 0.039917417, -0.010607958, 0.04724454), target2);
	target2 = MulAdd(ng3, MF4x4(0.03497211, 0.07911703, 0.016746478, 0.057458322, 0.06088827, -0.0053583174, -0.013933355, -0.10673472, -0.005456845, 0.020259444, -0.03139623, -0.008973998, -0.054345034, -0.035464175, -0.025964592, -0.0021018258), target2);
	target2 = MulAdd(ng4, MF4x4(-0.047960743, 0.021779433, -0.11492737, -0.033511925, -0.067273304, -0.07730279, -0.04037016, -0.045080706, 0.09207083, 0.009399112, 0.03178142, -0.011313022, 0.021366931, 0.0051248465, -0.008097426, -0.018301165), target2);
	target2 = MulAdd(ng5, MF4x4(0.014282785, -0.01572224, -0.027472818, -0.050844453, 0.0054380163, 0.052591007, -0.04270195, -0.02309884, 0.05152891, 0.03629938, -0.004667278, -0.024925238, 0.010567401, -0.07481508, 0.037315298, -0.04241005), target2);
	target2 = MulAdd(g6, MF4x4(-0.0013873621, 0.028364213, -0.031026626, 0.015620681, 0.004142558, -0.004863661, -0.013809934, -0.021330781, -0.0016021075, -0.002762517, -0.024034528, -0.03442779, -0.0013054899, -0.0042632925, 0.020974873, -0.0022553254), target2);
	target2 = MulAdd(g7, MF4x4(0.018562179, 0.034197688, 0.015277717, -0.01111744, -0.0032272537, -0.013426753, 0.017978273, -0.0015077988, -0.0051653306, 0.012690824, 0.001157489, 0.021362923, -0.01262595, 0.0054670637, -0.03031384, 0.012800636), target2);
	target2 = MulAdd(g8, MF4x4(0.012069964, -0.016048005, 0.01373877, -0.013298124, 0.03194061, -0.013332437, 0.016943898, -0.0058277305, -0.009428097, -0.023061408, -0.013659186, 0.015731167, -0.001986914, -0.019521309, 0.014714155, -0.00522106), target2);
	target2 = MulAdd(ng6, MF4x4(0.0007342483, -0.026249036, 0.030117435, -0.015873922, -0.008929299, -0.0023522351, 0.0164302, 0.023790896, -0.03889036, -0.024644645, 0.006634364, 0.046513416, -0.013473101, -0.0140229, 0.0019859916, 0.011869367), target2);
	target2 = MulAdd(ng7, MF4x4(0.02573362, 0.02375676, 0.00059617084, -0.016921667, -0.0671785, 0.008825013, -0.0013130646, 0.07261784, 0.010327604, 0.019814448, -0.008936156, 0.013669365, 0.020260049, -0.013921513, 0.018746642, -0.02843792), target2);
	target2 = MulAdd(ng8, MF4x4(-0.023912461, -0.02845122, 0.017157353, -0.0075884, 0.00036027908, 0.012657872, 0.0061078435, 0.014107368, 0.032003447, 0.020891502, -0.0067286897, -0.030822601, -0.06574523, -0.028198881, 0.032242246, 0.061325297), target2);
	target2 = MulAdd(g9, MF4x4(0.0074854135, 0.085437536, -0.06426021, -0.011461227, -0.023055596, -0.025802588, 0.005154878, 0.0056105317, 0.0058093905, -0.1922738, 0.14643134, -0.035682995, -0.026076004, -0.053763065, 0.04269994, 0.05141156), target2);
	target2 = MulAdd(g10, MF4x4(-0.011764035, -0.011518187, -0.010223651, 0.015880484, 0.023317069, -0.05618372, 0.0059863995, -0.059199195, 0.04408538, 0.084830545, -0.042056326, -0.057687927, 0.0037303802, -0.082143255, -0.0018375175, -0.071053974), target2);
	target2 = MulAdd(g11, MF4x4(0.0044008377, 0.03906328, 0.010832349, 0.046560295, -0.011535675, -0.004254791, -0.011572009, -0.008665021, 0.021482797, 0.0338495, 0.019407712, 0.010986841, -0.05098764, 0.009778762, -0.05300968, 0.021800417), target2);
	target2 = MulAdd(ng9, MF4x4(-0.021229895, 0.003305197, 0.0024396733, 0.02508984, 0.012702334, 0.033208802, -0.03008867, 0.0046940153, -0.030033346, -0.03792949, -0.05176272, -0.022788247, -0.012390274, -0.0135713285, -0.021557398, -0.06371822), target2);
	target2 = MulAdd(ng10, MF4x4(-0.08850463, 0.0793453, 0.020550407, -0.05461798, -0.009402199, -0.027972376, -0.005156784, 0.02965216, 0.017268548, 0.04429356, 0.009809255, 0.031682562, 0.031172305, 0.03379402, 0.04395453, 0.062268186), target2);
	target2 = MulAdd(ng11, MF4x4(0.01247631, -0.100407876, 0.042796645, -0.06502109, 0.032900713, 0.13428093, -0.033733122, 0.016222714, -0.0178732, -0.002501202, 0.0035485916, -0.015802957, -0.012150594, -0.0022097295, -0.023347225, -0.038795106), target2);
	target2 = MulAdd(g12, MF4x4(0.05938152, 0.059704512, 0.030237982, -0.04353414, 0.055702258, -0.0029182534, -0.09416582, 0.08440017, 0.008828504, -0.03065552, 0.0646233, 0.03629834, -0.04788823, 0.071730554, -0.084519096, 0.05947715), target2);
	target2 = MulAdd(g13, MF4x4(-0.109025195, 0.08866299, -0.047770992, 0.08894294, 0.014965939, 0.059702646, 0.032068793, -0.053778123, 0.019529643, 0.008203253, 0.014628202, -0.017464165, 0.0060448833, 0.027196955, -0.018907491, -0.0026503608), target2);
	target2 = MulAdd(g14, MF4x4(0.081304245, 0.06199502, -0.045204166, -0.08596196, 0.028582547, 0.011568329, 0.024607504, 0.007910688, 0.035362624, -0.08241612, -0.06848065, -0.026512494, -0.04969066, -0.065509185, 0.050000466, 0.05400427), target2);
	target2 = MulAdd(ng12, MF4x4(-0.015837632, -0.087357126, 0.015269297, 0.00058823347, -0.01621553, -0.020170743, 0.049107697, -0.043301217, -0.025253763, 0.021026319, -0.047297694, -0.06751796, -0.020940255, -0.019703854, 0.020391362, -0.0049682967), target2);
	target2 = MulAdd(ng13, MF4x4(0.042480465, -0.010125742, -0.016281988, -0.023186147, -0.040653005, 0.022371864, -0.028837234, 0.009938319, 0.0576169, -0.09105783, 0.06033278, -0.057518024, -0.08265035, -0.094854854, 0.10116602, 0.06394465), target2);
	target2 = MulAdd(ng14, MF4x4(-0.0027242866, 0.007224464, -0.026375424, 0.0052841473, -0.09330453, 0.010634226, 0.024063759, -0.005130613, 0.0070950384, 0.048039638, 0.029983977, 0.042704105, -0.018214077, -0.020184115, -0.0073092347, 0.01891303), target2);

	MF4 target3 = MF4(0.0113136405, -0.0063769994, 0.010973808, -0.011560247);
	target3 = MulAdd(g0, MF4x4(0.20584391, 0.22176251, 0.12817344, 0.16349226, 0.24339934, 0.17479841, 0.23518398, 0.19196586, 0.10900553, 0.080384456, 0.049235467, 0.027794728, -0.05141681, 0.0007015638, -0.010815038, 0.0042753317), target3);
	target3 = MulAdd(g1, MF4x4(0.0714463, 0.026722606, -0.01580307, -0.036710627, 0.13722661, 0.1325067, 0.12155393, 0.092651665, -0.21974826, -0.22233371, -0.16056158, -0.16607761, -0.10291634, -0.19475317, -0.117747545, -0.18824245), target3);
	target3 = MulAdd(g2, MF4x4(0.0385657, 0.12090414, 0.09484494, 0.18811698, 0.015320313, 0.0051719607, -0.016927784, -0.03450855, -0.06506198, 0.05625437, -0.02982918, 0.06270707, -0.13614634, -0.16412087, -0.1319045, -0.1733402), target3);
	target3 = MulAdd(ng0, MF4x4(-0.2033194, -0.2067332, -0.16234529, -0.13661149, -0.22975448, -0.1841141, -0.26185742, -0.23617432, -0.058616254, -0.11470092, -0.064833924, -0.082624085, 0.0018012474, 0.010971402, -0.0015926235, -0.056720145), target3);
	target3 = MulAdd(ng1, MF4x4(0.012773226, -0.013976976, 0.007706423, -0.022663448, -0.13764867, -0.121803656, -0.12158649, -0.090470046, 0.22548035, 0.22929274, 0.19819829, 0.16713546, 0.15709636, 0.16574621, 0.17671035, 0.18283793), target3);
	target3 = MulAdd(ng2, MF4x4(-0.042175665, -0.07863977, -0.1209475, -0.14067635, 0.0041970555, 0.03598768, 0.009632853, 0.040009186, -0.014479617, -0.060088724, 0.041292075, -0.004627034, 0.09958161, 0.120460846, 0.15672928, 0.18279101), target3);
	target3 = MulAdd(g3, MF4x4(-0.03370265, -0.07010845, 0.04648067, -0.007877368, -0.11963536, -0.014810524, -0.01556151, 0.11850641, -0.0021221144, -0.050126694, 0.03193186, -0.012815193, -0.019450104, 0.017504638, -0.007544723, 0.0028710878), target3);
	target3 = MulAdd(g4, MF4x4(-0.018643383, -0.04445287, 0.07541755, 0.043240048, 0.027209729, 0.06499946, -0.018240616, 0.014570308, -0.058010563, 0.019799259, 0.0030194358, 0.06929909, -0.0056114118, 0.009093819, 0.03223382, 0.053046633), target3);
	target3 = MulAdd(g5, MF4x4(-0.0133113945, 0.019222038, -0.019711712, 0.03676041, -0.040668692, -0.09569124, 0.053240422, 0.02388429, -0.12218938, -0.08086858, -0.043406986, 0.009516919, -0.04289723, 0.056066234, -0.035658766, 0.061961327), target3);
	target3 = MulAdd(ng3, MF4x4(0.023964832, 0.07624368, -0.020873679, 0.0256053, 0.12444348, 0.017517762, 0.0049669463, -0.13534403, 0.0061981925, 0.052108612, -0.02908856, 0.0135363275, -0.030678025, -0.015180554, -0.003328521, 0.021289025), target3);
	target3 = MulAdd(ng4, MF4x4(-0.02231607, 0.09188703, -0.13311718, -0.009214322, -0.021628553, -0.047853045, 0.014602204, 0.00086198986, 0.06729613, -0.04228859, -0.0030271288, -0.066696614, -0.0071333526, -0.019973027, -0.036203787, -0.056756962), target3);
	target3 = MulAdd(ng5, MF4x4(0.05850421, -0.0047896104, -0.0036014696, -0.05261781, 0.020924669, 0.093680315, -0.061118666, -0.020405825, 0.100053616, 0.061513033, 0.018219335, -0.02082051, 0.039510462, -0.08404035, 0.050883695, -0.052642383), target3);
	target3 = MulAdd(g6, MF4x4(0.0018722751, 0.020684525, -0.02356179, 0.009360695, 0.0036660347, -0.006931955, -0.015446396, -0.02027952, 0.006836204, 0.00341897, -0.020235445, -0.029695021, -0.0053638928, -0.003108307, 0.016338514, -0.0058539147), target3);
	target3 = MulAdd(g7, MF4x4(0.021255454, 0.036906153, 0.019704418, -0.009486708, -0.009084271, -0.012694315, 0.012314602, -0.002121502, -0.0047310013, 0.0051953527, 0.005284111, 0.019026738, -0.0082058, 0.0032704875, -0.02295881, 0.009902225), target3);
	target3 = MulAdd(g8, MF4x4(0.01866446, -0.012482591, 0.011301323, -0.011294572, 0.035305023, -0.002237504, 0.010679519, -0.000508338, 8.54808e-05, -0.02033275, -0.008063064, 0.013109392, 0.0002144853, -0.007573196, 0.015446864, 0.0023629267), target3);
	target3 = MulAdd(ng6, MF4x4(-0.00978586, -0.025148384, 0.024103062, -0.009535831, -0.002879648, 0.0012579657, 0.018271701, 0.02113783, -0.03735869, -0.02581921, 0.005823926, 0.04087479, -0.0077521144, -0.012728182, 0.0067631016, 0.012669306), target3);
	target3 = MulAdd(ng7, MF4x4(0.018013993, 0.026847519, 0.0021338093, -0.010125906, -0.07225123, -0.0025745684, -0.012799456, 0.056836564, 0.011377961, 0.017062144, -0.007494936, 0.010489539, 0.012431433, -0.019703059, 0.007082196, -0.031403106), target3);
	target3 = MulAdd(ng8, MF4x4(-0.027560756, -0.030534893, 0.019047359, -0.0068690516, -0.0069791237, 0.0081298705, 0.0028945836, 0.009644792, 0.023117492, 0.020431874, -0.0056545194, -0.02480413, -0.07047867, -0.037890248, 0.025276575, 0.049277883), target3);
	target3 = MulAdd(g9, MF4x4(0.015748044, 0.086017504, -0.051286206, -0.003599236, -0.023193073, -0.023733998, 0.002799065, 0.005258185, 0.010922322, -0.17615142, 0.14165695, -0.029909663, -0.017889502, -0.046552524, 0.03964598, 0.049426638), target3);
	target3 = MulAdd(g10, MF4x4(-0.0073433192, -0.011656557, -0.0068763834, 0.014078096, 0.018000547, -0.053453963, 0.00786442, -0.050999343, 0.04133596, 0.079854034, -0.038685665, -0.053702615, -0.0019746814, -0.07859513, -0.0076702842, -0.067455895), target3);
	target3 = MulAdd(g11, MF4x4(0.009444058, 0.043747634, 0.018948376, 0.05009854, -0.011580162, -0.0065071583, -0.013997229, -0.011439345, 0.023656886, 0.030394329, 0.02134696, 0.009440647, -0.048070773, 0.007841886, -0.05323206, 0.013742174), target3);
	target3 = MulAdd(ng9, MF4x4(-0.019898156, 0.000818382, 0.0010332671, 0.01928002, 0.013191405, 0.029638033, -0.02320344, 0.007421591, -0.02833562, -0.033782348, -0.04978492, -0.020176657, -0.0138621945, -0.013926801, -0.021230116, -0.058447562), target3);
	target3 = MulAdd(ng10, MF4x4(-0.08644919, 0.073316105, 0.017838318, -0.049475558, -0.007295481, -0.025924034, -0.0068463665, 0.024905838, 0.016891189, 0.041490942, 0.011466327, 0.029829478, 0.034047317, 0.036229853, 0.04733451, 0.062059373), target3);
	target3 = MulAdd(ng11, MF4x4(0.008540078, -0.09782984, 0.037032314, -0.063398704, 0.028395759, 0.12369336, -0.03458798, 0.012534729, -0.02110072, -0.007954169, -0.002136603, -0.019739889, -0.01087704, -0.004243762, -0.019832188, -0.03347458), target3);
	target3 = MulAdd(g12, MF4x4(0.054272063, 0.053247515, 0.025393743, -0.043571323, 0.05035569, -0.0042993715, -0.08645438, 0.07723826, 0.009475109, -0.026420964, 0.06111581, 0.03551816, -0.040812302, 0.07295332, -0.07636345, 0.059867676), target3);
	target3 = MulAdd(g13, MF4x4(-0.103165455, 0.07943813, -0.04935193, 0.0776962, 0.0149123045, 0.056066703, 0.028792242, -0.051936194, 0.015754307, 0.004817783, 0.011213326, -0.018288456, 0.004715879, 0.02536934, -0.015915168, -0.0008426239), target3);
	target3 = MulAdd(g14, MF4x4(0.0723322, 0.054040924, -0.0476729, -0.08399067, 0.024805048, 0.0118207345, 0.022066418, 0.006886721, 0.031156952, -0.07442044, -0.06636254, -0.023382878, -0.051537152, -0.06360144, 0.045075376, 0.050795015), target3);
	target3 = MulAdd(ng12, MF4x4(-0.013090917, -0.0783513, 0.014832963, 0.0033018794, -0.014636453, -0.020164138, 0.043610837, -0.04028102, -0.024922965, 0.017962486, -0.045353472, -0.065985985, -0.020156763, -0.019561546, 0.01627726, -0.0065625296), target3);
	target3 = MulAdd(ng13, MF4x4(0.038890418, -0.007016582, -0.01374995, -0.01861392, -0.03940205, 0.019309007, -0.026372327, 0.0079260105, 0.05348645, -0.087648585, 0.057326347, -0.055338904, -0.07803935, -0.09048593, 0.09173596, 0.05747143), target3);
	target3 = MulAdd(ng14, MF4x4(0.001742558, 0.010703091, -0.021057613, 0.006859906, -0.086059436, 0.008977797, 0.021366948, -0.0043655075, 0.005885378, 0.042646274, 0.028150525, 0.037941158, -0.014817959, -0.016695084, -0.0056764153, 0.019049013), target3);

	float2 outputPt = GetOutputPt();

	pos -= 0.5f * outputPt;
	OUTPUT[gxy] = MF4(MF3(target1.x, target2.x, target3.x) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);

	++gxy.x;
	pos.x += outputPt.x;
	OUTPUT[gxy] = MF4(MF3(target1.y, target2.y, target3.y) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);
	
	++gxy.y;
	pos.y += outputPt.y;
	OUTPUT[gxy] = MF4(MF3(target1.w, target2.w, target3.w) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);

	--gxy.x;
	pos.x -= outputPt.x;
	OUTPUT[gxy] = MF4(MF3(target1.z, target2.z, target3.z) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);
}
